[英]Calling python script from a Bash script
我正在尝试从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
这个故事还有很多其他问题不在您的范围之内。 您的PYTHONPATH变量在此过程中的某个地方变得困惑。
插入几条快速测试线:
在bash中:
echo $PYTHONPATH
在您的python中:
import os
print os.environ["PYTHONPATH"]
在某些时候,googlemaps的路径迷路了。
您的问题出在脚本本身,您的bash代码正常! 如果直接从bash运行python scrip.py
没问题,则应该测试两个调用是否使用相同的解释器。 您可以检查python脚本中的shebang行,它是文件中的第一行,例如#!/usr/bin/env python
或#!/usr/bin/python
,并将其与以下which python
命令的输出进行比较:输出是不同的尝试更改或添加到文件中的shebang行。 如果您直接在bash中调用文件./some_script.py
会读取第一行,如果是shebang行,他将为文件执行特定命令。 我的观点是,如果您使用两个不同的解释器直接使用python script.py
和间接./script.py
来调用文件,则其中之一可能没有正确的python模块。
方法代码:
$ which python
/usr/local/bin/python
因此,第二行是您的解释器从该脚本构建第一行的路径,该行写在脚本文件的第一行中。
#!/usr/local/bin/python
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.