python - 在 google colab 中运行 python 脚本,nohup 给出 ImportError
问题描述
我在 google colab 上运行这些。
在我的第一个单元格上,我 pip 安装了必要的软件包
!pip install python_speech_features
!pip install soundfile
它提供以下日志,以断言它们已安装
Requirement already satisfied: python_speech_features in /usr/local/lib/python3.6/dist-packages (0.6)
Requirement already satisfied: soundfile in /usr/local/lib/python3.6/dist-packages (0.10.2)
Requirement already satisfied: cffi>=1.0 in /usr/local/lib/python3.6/dist-packages (from soundfile) (1.12.3)
Requirement already satisfied: pycparser in /usr/local/lib/python3.6/dist-packages (from cffi>=1.0->soundfile) (2.19)
单元格 4
显示我导入 python_speech_features 没有问题
单元格 5
!nohup python run_1_Dataprep.py "conf/conf_dataprep.py" "conf/conf1_sr8k.py" |& tee run_1_Dataprep.log &
表明当我尝试使用
- nohup:(这样就不会发生打嗝),并且
- |& tee : 这让我可以将所有输出记录到日志文件以及终端上
- run_1_Dataprep.log:我要存储所有终端输出的日志文件
- &:在后台运行它。
如果您无法查看图片,这些是错误消息
nohup: ignoring input
===========
python run_1_Dataprep.py conf/conf_dataprep.py conf/conf1_sr8k.py
2019-10-13 16:35:09.872582
===========
Traceback (most recent call last):
File "run_1_Dataprep.py", line 9, in <module>
from _helper_basics_ import *
File "/content/gdrive/My Drive/Colab Notebooks/_helper_/_helper_basics_.py", line 27, in <module>
import wave, python_speech_features#, pyaudio
ImportError: No module named python_speech_features
单元 6
当我刚跑的时候,
!python run_1_Dataprep.py "conf/conf_dataprep.py" "conf/conf1_sr8k.py"
它运行成功。
虽然我可以在单元 6 中完美运行它,但我希望将日志写入日志文件,因此单元 5 的目的。为什么它没有检测到我的预安装包,有什么解决方法吗?
解决方案
我以为我会和你遇到同样的问题。当我在我的 python virtualenv 中运行“nohup”和“&”设置命令时,我得到了如下错误消息:
nohup: ignoring input
Traceback (most recent call last):
File "trainer_cnn_bit_forDebugging.py", line 13, in <module>
import numpy as np
ImportError: No module named numpy
但是当我使用“python + command”时,它工作正常。
期待答案。
==================================================== =======================
建立答案:
nohup 进入错误的 python 路径,你可以进行测试。
创建一个python文件test.py,内容如下:
import sys
print(sys.path)
运行这两个命令,然后你可以看到如下结果:
蟒蛇测试.py
['/misc/Work20/wwm1995/speech_11_08_2019', '/usr/lib/python36.zip',
'/usr/lib/python3.6', '/usr/lib/python3.6/lib-dynload',
'/home/usr18/wwm1995/.local/lib/python3.6/site-packages',
'/usr/lib/python3.6/site-packages',
'/usr/local/lib/python3.6/dist-packages',
'/usr/lib/python3/dist-packages']
和
nuhup python test.py >./output 2>&1 &
打开输出文件
['/misc/Work20/wwm1995/speech_11_08_2019',
'/Work7/home/usr18/wwm1995/.virtualenvs/ENV/lib/python2.7',
'/Work7/home/usr18/wwm1995/.virtualenvs/ENV/lib/python2.7/plat-x86_64-
linux-gnu',
'/Work7/home/usr18/wwm1995/.virtualenvs/ENV/lib/python2.7/lib-tk',
'/Work7/home/usr18/wwm1995/.virtualenvs/ENV/lib/python2.7/lib-old',
'/Work7/home/usr18/wwm1995/.virtualenvs/ENV/lib/python2.7/lib-dynload',
'/usr/lib/python2.7', '/usr/lib/python2.7/plat-x86_64-linux-gnu',
'/usr/lib/python2.7/lib-tk',
'/Work7/home/usr18/wwm1995/.virtualenvs/ENV/local/lib/python2.7/site-packages',
'/Work7/home/usr18/wwm1995/.virtualenvs/ENV/lib/python2.7/site-packages']
运行python命令直接使用python3,但是nohup找到的python路径是python2。这时候需要指定python版本来运行py文件。进入
哪个python3
获取当前使用的 python 路径:
/usr/bin/python3
在这种情况下,只需指定运行 nohup 文件的 python 版本:
nohup /usr/bin/python3 test.py > log.txt2>&1 &
祝你好运!
推荐阅读
- r - 合并列,但前提是没有列有 NA 或空白
- kubernetes - Kubernetes (EKS) - 监控到 pod 或通过服务的流量
- javascript - 如何使用 JEST 在方法中模拟方法?
- python - SLQAlchemy 无法创建关系列
- c# - 如何正确获取 MainPage?
- c++ - 为什么以下不等式在 C++ 中计算为真?
- python - 从重复轴重新索引
- java - 我正在尝试将此 Firebase 数据转换为 android 中的回收卡视图
- javascript - 在事件而不是页面加载之后启动 jQuery 计时器
- bash - 如何在bash中提取文本文件中的列