导入后子模块仍然缺失

时间:2016-03-08 16:26:43

标签: python import dependencies ipython

我有一些循环/相互导入导致复杂项目中的问题,我试图在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

0 个答案:

没有答案