Python 2.7:从不同的子目录导入位于子目录中的模块

时间:2014-07-25 23:52:33

标签: python-2.7 module

这是我的代码配置:

__init__py
./module_1/foo.py
./module_1/__init__.py
./module_2/bar.py
./module_2/__init__.py

我的目标是能够从 bar.py 导入 foo 模块,但我对如何操作非常困惑。

如:

from ..module_1.foo import *

会引发以下错误:

ValueError: Attempted relative import in non-package

编辑:

理想情况下,我希望能够以下列方式运行我的脚本:

  

python ./module1/foo.py

1 个答案:

答案 0 :(得分:1)

您还没有展示如何调用脚本,但是您需要确保您的脚本实际上是python路径中的包。这基本上是错误消息告诉你的,你试图导入一个"非包"。你可能没有在python路径中拥有你的顶级。例如......

如果您的顶级模块名为 app ,且您的配置为

<path-to-app>/app/__init__py
<path-to-app>/app/module_1/foo.py
<path-to-app>/app/module_1/__init__.py
<path-to-app>/app/module_2/bar.py
<path-to-app>/app/module_2/__init__.py

您可以按如下方式运行脚本。

cd <path-to-app>
PYTHONPATH=$PWD python -m app.module_2.bar

适合我。