Python从并行目录导入模块

时间:2014-07-08 00:37:52

标签: python import module parent relative-import

我如何组织我的python导入,以便我可以拥有这样的目录。

project
|      \
|      __init__.py
|     
src
|   \
|    __init__.py
|    classes.py
|
test
    \
     __init__.py
     tests.py

然后在/project/test/tests.py中可以导入classes.py

我在tests.py

中看到的代码如下所示
from .. src.classes import(
    scheduler
    db
)

我的错误

SystemError: Parent module '' not loaded, cannot perform relative import

任何人都知道该怎么做?

1 个答案:

答案 0 :(得分:18)

Python将包含您启动的脚本的文件夹添加到PYTHONPATH,因此如果您运行

python test/tests.py

只有文件夹test被添加到路径中(而不是您执行命令的基础目录)。

而是像这样运行你的测试:

python -m test.tests

这会将基础目录添加到python路径,然后可以通过非相对导入访问类:

from src.classes import etc

如果您真的想使用相对导入样式,则需要将3个目录添加到包目录

package
* __init__.py
* project
* src
* test

然后使用

从包目录上方执行它
python -m package.test.tests

另见:

相关问题