2017-06-05 43 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

沒有事情是,我不想使用整個路徑。如果我們更改回購庫的位置(例如),我不想去和每個文件中的所有路徑 –