2017-06-05 24 views
0

我想从shell运行我的python脚本。导入错误:从shell调用python脚本

#! /usr/bin/python 

import subprocess 
import time 

from path.to.my.function1 import function1 
from path.to.my.function2 import function2 

    #some code here 

if __name__ == "__main__": 

从我的shell命令,我想这样运行:

./myPythonScript.py 

结果是:

ImportError: No module named path.to.my.function1 

当我从Eclipse中运行它,例如,我不没有任何错误。我在我的目录中有一些空的_ init _.py文件。

我不希望添加

sys.path.append(0, /path/to/my/function1) 

,因为它需要很容易地导出。另外我不想将我的文件路径添加到PYTHONPATH的源文件夹。它需要是即插即用的。

我不知道我是否有不同的编译器,或者我应该修改我的#!在/ usr/bin中/ Python的。或者它可能是我的PYTHONPATH?

回答

0

你可以让你的代码Python包,然后你就可以这样做。 只需将__init__.py脚本添加到目录并将__main__.py脚本添加到您的目录。在__main__.py 中添加您在if __name__ == '__main__'之后执行的代码。 对于进口增加如下一行: from .path.to.my.script import foo

最后,运行python -m <目录名>。你的软件包目录之外。

+0

的目录应该我还是把#! usr/bin/python?我会看看包裹! –

+0

没必要。你正在使用python声明命令时:python -m < package > – Sawel

+0

如果我使用_main_.py(包),我仍然有同样的错误。感谢您的帮助 –

0

使用PYTHONPATH = /路径/要/包/根所在的包根以上path

+0

没有事情是,我不想使用整个路径。如果我们更改回购库的位置(例如),我不想去和每个文件中的所有路径 –