我有以下的文件结构,每个代码最多一行(如下图所示)的__init__.py当它是圆形的进口:使用绝对导入和
a
├── b
│ ├── c.py import a.b.d as d
│ ├── d.py
│ └── __init__.py from a.b.c import *
├── __init__.py
└── main.py import a.b as b
通过运行python -m a.main
,我得到以下错误:
Traceback (most recent call last):
File "/usr/lib/python2.7/runpy.py", line 162, in _run_module_as_main
"__main__", fname, loader, pkg_name)
File "/usr/lib/python2.7/runpy.py", line 72, in _run_code
exec code in run_globals
File "/tmp/test/a/main.py", line 1, in <module>
import a.b as b
File "a/b/__init__.py", line 1, in <module>
from a.b.c import *
File "a/b/c.py", line 1, in <module>
import a.b.d as d
AttributeError: 'module' object has no attribute 'b'
我不确定这是否是由循环导入造成的。如果我将import a.b.d as d
更改为from a.b import d
,则不会再有错误。
from'b.py'你应该只能'输入c'否? –
[This](https://www.youtube.com/watch?v=0oTh1CXRaQ0)虽然有点长,但在处理导入时可能非常有用。 – quapka
@peter我有另一篇文章,涵盖创建和导入自定义模块。如果它可以帮助你,请注册。 http://stackoverflow.com/questions/37072773/how-to-create-and-import-a-custom-module-in-python/37074372#37074372 – PyNoob