从Bash脚本调用python脚本

时间:2016-07-29 18:11:56

标签: python bash import

我正在尝试从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

2 个答案:

答案 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