繁体   English   中英

从Bash脚本调用python脚本

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM