所以,我的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。
答案 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项目中的每个文件夹中。