我正在尝试从bash脚本调用python脚本。只有当我尝试从bash脚本运行.py时才会出现导入错误。如果我用python myscript.py运行一切都很好。这是我的bash脚本:
while true; do
python script.py
echo "Restarting...";
sleep 3;
done
我得到的错误:
Traceback (most recent call last):
File "script.py", line 39, in <module>
from pokemongo_bot import logger
File "/Users/Paolo/Downloads/folder/t/__init__.py", line 4, in <module>
import googlemaps
ImportError: No module named googlemaps
答案 0 :(得分:3)
这个故事还有更多内容不在您的问题中。 你的PYTHONPATH变量在这个过程中的某个地方变得混乱 插入一些快速测试线:
bash中的:
echo $PYTHONPATH
你的python中的:
import os
print os.environ["PYTHONPATH"]
在某些时候,google地图的路径迷失了。
答案 1 :(得分:1)
你的问题出在脚本本身,你的bash代码没问题!如果您没有直接从bash运行python scrip.py
的问题,您应该测试是否对两个调用使用相同的解释器。您可以检查python脚本中的shebang行,它是文件中的第一行,例如#!/usr/bin/env python
或#!/usr/bin/python
,如果输出不同,则将其与which python
命令的输出进行比较尝试更改或添加shebang行到文件中。如果你直接调用bash中的文件./some_script.py
bash读取第一行,如果是shebang行,他将执行该文件的特定命令。我的观点是,如果你使用两个不同的解释器直接用python script.py
和间接./script.py
调用文件,其中一个可能没有正确的python模块。
如何编码:
$ which python
/usr/local/bin/python
所以第二行是解释器构建一个shebang的路径,写在脚本文件的第一行。
#!/usr/local/bin/python