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
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/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;写下答案。