2017-05-25 83 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"