首页 > 解决方案 > 在 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 和单元 5

单元格 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: 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:显示我可以正常运行

单元 6

当我刚跑的时候,

!python run_1_Dataprep.py "conf/conf_dataprep.py" "conf/conf1_sr8k.py"

它运行成功。

虽然我可以在单元 6 中完美运行它,但我希望将日志写入日志文件,因此单元 5 的目的。为什么它没有检测到我的预安装包,有什么解决方法吗?

标签: pythonbashgoogle-colaboratorynohuptee

解决方案


我以为我会和你遇到同样的问题。当我在我的 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 &

祝你好运!


推荐阅读