从文件夹

时间:2016-07-04 13:12:34

标签: python-3.x

所以,我的python包中有以下结构:

./main.py
__init__.py
./mymods/
    __init__.py
    a.py
    b.py

我的模块a.py导入模块b:

import b

现在,我想从main导入模块a但是当我这样做时,我得到以下内容:

import mymods.a

ImportError: No module named 'b'

我用谷歌搜索,但我找不到解决这个特殊问题的方法。 谁知道如何做到这一点的好撒玛利亚人?

P.S。如果可能的话,我宁愿不必从main显式导入模块b。

2 个答案:

答案 0 :(得分:2)

您需要将mymods放入包中。 这可以通过在目录中创建一个空的__init__.py文件来完成。

➜ tree
.
├── main.py
└── mymods
    ├── __init__.py
    ├── a.py
    └── b.py

1 directory, 4 files
➜ cat main.py
import mymods.a

print 'printing from main'
➜ cat mymods/a.py
from . import b

print 'printing from a'

➜ cat mymods/b.py
print 'printing from b

➜ python main.py
printing from b
printing from a
printing from main

对于Python 3,将import b更改为from . import b

答案 1 :(得分:0)

基本上,您必须将空__init__.py文件添加到py项目中的每个文件夹中。

详情请见What is __init__.py for?