Python &引用;导入lib.subpackage.blah作为foo“;问题-“;属性错误:模块';lib';没有属性';子包装'&引用;
我的文件系统结构:Python &引用;导入lib.subpackage.blah作为foo“;问题-“;属性错误:模块';lib';没有属性';子包装'&引用;,python,python-import,Python,Python Import,我的文件系统结构: main.py lib/ \uuuu init\uuuu.py subpackage/ \uuuu init\uuuu.py app.py sched.py main.py: import lib.subpackage import lib.subpackage.sched import lib.subpackage.app import lib.subpackage.sched as foo lib/\uuuu init\uuuu.py为空 lib/sub
main.py
lib/
\uuuu init\uuuu.py
subpackage/
\uuuu init\uuuu.py
app.py
sched.py
import lib.subpackage
import lib.subpackage.sched
import lib.subpackage.app
import lib.subpackage.sched as foo
lib/\uuuu init\uuuu.py为空
lib/subpackage/\uuuu init\uuuuu.py:
import lib.subpackage
import lib.subpackage.sched
import lib.subpackage.app
import lib.subpackage.sched as foo
lib/subpackage/app.py:
import lib.subpackage
import lib.subpackage.sched
import lib.subpackage.app
import lib.subpackage.sched as foo
lib/subpackage/sched.py为空
我得到了这个错误:
Traceback (most recent call last):
File "c:\Users\logix\Desktop\code_\from_linux\dbg\main.py", line 1, in <module>
import lib.subpackage
File "c:\Users\logix\Desktop\code_\from_linux\dbg\lib\subpackage\__init__.py", line 2, in <module>
import lib.subpackage.app
File "c:\Users\logix\Desktop\code_\from_linux\dbg\lib\subpackage\app.py", line 1, in <module>
import lib.subpackage.sched as foo
AttributeError: module 'lib' has no attribute 'subpackage'
回溯(最近一次呼叫最后一次):
文件“c:\Users\logix\Desktop\code\from\u linux\dbg\main.py”,第1行,在
导入lib.subpackage
文件“c:\Users\logix\Desktop\code\from\u linux\dbg\lib\subpackage\ \uuuuu init\uuuuu.py”,第2行,在
导入lib.subpackage.app
文件“c:\Users\logix\Desktop\code\from\u linux\dbg\lib\subpackage\app.py”,第1行,在
将lib.subpackage.sched作为foo导入
AttributeError:模块“lib”没有属性“subpackage”
我在命令行中使用Python3.6.4
有什么想法吗?这是一个已知的错误,在使用别名时,会出现在进口机器中;报告如下: 从包中导入子{module,package}的别名会在导入时引发AttributeError 我们有三个嵌套包:
foo
->bar
->baz
。bar
包导入foo.bar.baz
。我们尝试导入foo.bar
。除非我们尝试将foo.bar.baz
import中的foo.bar
与import别名,否则这种方法很有效。。。作为…
语法
这方面的错误修复是Python3.7的一部分(目前仅限于alpha版本)
解决方法是使用相对导入:
from . import sched as foo
@谢谢,但我仍然不知道如何修复它。我当时正在测试我的假设。事实上,这是一个已知的bug;写下答案。