2017-05-25 115 views
0

我正在運行一個導入自定義函數的python腳本。我的腳本名爲update_wx.py,位於weather目錄中。當我從我的linux命令行運行這個作爲python weather/update_wx.py時,它運行良好。然而,當我運行它作爲一個bash腳本的一部分,我收到以下錯誤蟒:從bash腳本運行Python導致自定義模塊導入錯誤

ModuleNotFoundError: No module named 'weather'

內update_wx.py這是造成此錯誤的行是

from weather.nasa.nasa import import_wx_data

爲背景,nasa.pynasa目錄中的一個腳本,位於weather目錄中。正如我所說的,這在從命令行運行時起作用。我檢查了所有文件和目錄的文件權限,更改了update_wx.py腳本中的工作目錄,並在我的bash腳本中編輯了python路徑,但都無濟於事。

如何在通過bash運行腳本時導入此python函數?

感謝您的幫助。

+0

您是否在代表模塊的每個文件夾中都有____init____.py文件? – BrokenRobot

+0

如果你的'nasa.py'腳本與你的'update_wx.py'腳本不在同一個文件夾中,那麼python找不到腳本。根據目錄樹的組織方式,您有幾個選項。請參閱[this](https://stackoverflow.com/questions/714063/importing-modules-from-parent-folder)關於如何正確導入的問題。 –

+0

[從父文件夾導入模塊]的可能重複(https://stackoverflow.com/questions/714063/importing-modules-from-parent-folder) –

回答

0

假設你的天氣模塊存儲在解釋器之外,我認爲問題是解釋器不知道模塊,它只知道正在執行的.py文件,並且你需要相對地讓翻譯知道如何要麼通過導航到父「......」像

from .weather.nasa.nasa import weather_wx_data 

Relative imports for the billionth time

,或者你已經安裝了多個interprerters,你需要調用解釋器的絕對路徑像

/root/python27/python.exe "/c/weather/update_wx.py" 
相關問題