0
得到了一些奇怪的导入错误,这是由解释器报告的奇怪报道。Python导入失败
我使用的CPython-3.5
目录结构:
.
+-- outer
| +-- inner
| | +-- __init__.py
| | +-- first.py
| | +-- second.py
| +-- __init__.py
+-- main.py
main.py:
import outer.inner
print(outer.inner.var)
外/ __ init__.py:空
外/内/ __ init__ .py:
import outer.inner.first
var = outer.inner.first.var
外/内/ first.py:
import outer.inner.second
var = outer.inner.second.var
外/内/ second.py:
var = 1337
然后,我运行main.py
和脚本失败,此堆栈跟踪:
Traceback (most recent call last):
File "main.py", line 1, in <module>
import outer.inner
File "/outer/inner/__init__.py", line 1, in <module>
import outer.inner.first
File "/outer/inner/first.py", line 2, in <module>
var = outer.inner.second.var
AttributeError: module 'outer' has no attribute 'inner'
因此,Python不想正确绑定名称。虽然first.py import语句:import outer.inner.second
是没有崩溃执行,这句话结合命名outer
像一个空包,没有(但应)模块命名inner
我该怎么办错了吗?
所以'inner'试图从'outer'导入 - 为什么?为什么'first.py',例如,只是'from .second import var'? – jonrsharpe
@jonrsharpe我对Python比较陌生,但我听说相对的进口产品颇有争议。无论如何,我只想知道,这里究竟做错了什么,不仅我应该怎么做 –
看看https://docs.python.org/3/tutorial/modules.html,然后[编辑]澄清问题是否仍然需要。 – jonrsharpe