2014-07-25 72 views
0

这里是我的代码配置:的Python 2.7:导入坐落在一个子目录从不同的子目录下一个模块

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

我的目标是能够从bar.py导入模块,但我对如何做到这一点感到困惑。

的东西,如:

from ..module_1.foo import * 

会引发以下错误:

ValueError: Attempted relative import in non-package 

编辑:

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

python ./module1/foo.py

回答

1

您尚未显示如何调用脚本,但您需要确保脚本实际上是您的Python路径中的软件包。这基本上就是错误信息告诉你的,你试图导入一个“非包装”。您可能没有在python路径中的顶层。例如...

如果您的顶层模块被称为应用和你的配置是

<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 

适合我。

+0

感谢您的回答,我只是更新了更多细节的问题,但我敢打赌,围绕Python路径玩是最好的选择......谢谢。 –

相关问题