我有一些循环/相互导入导致复杂项目中的问题,我试图在ipython
中追踪。我的直接问题是我导入了一个子模块,但仍然出现错误,即:
In [32]: import Figures
In [33]: import Figures.stuff
In [34]: Figures.stuff
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
<ipython-input-34-903ae3688f13> in <module>()
----> 1 Figures.stuff
AttributeError: 'module' object has no attribute 'stuff'
这怎么可能?我至少应该在[33]
中遇到某种导入错误吗?
这部分文件结构如下:
Figures/
__init__.py
stuff.py
__init__.py
文件:
from __future__ import absolute_import, division, print_function, unicode_literals
from matplotlib import rc
rc('font', **{'family': 'serif', 'sans-serif': ['Times']})
# from . import stuff
如果重要,我使用python2.7,通常使用from __future import absolute_import
。
编辑 :当我从其他模块中删除导入时问题就消失了......为什么?!
Figures/
...
comparisons/
__init__.py
sets1.py
如果我在from . import sets1
内发表评论comparisons/__init__.py
,则问题就会消失。
在sets1.py
我做:
sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), '..')))
import Figures
import Figures.stuff