所以我有两个不同的包裹。第一个是我的主包“bobzilla”,另一个包扩展了第一个bobzilla.结构". 在
即
bobzilla/
__init__.py
其中bobzilla/\uu init_u.py包含:
^{pr2}$以及:
bobzilla/
__init__.py
structure/
__init__.py
其中bobzilla/structure/\uyu init\uy.py包含:
import bobzilla
foo=Foo("bar")
当执行bobzilla/structure/\uu init_uu.py时,我得到:
AttributeError: 'module' object has no attribute 'Foo'
我的问题是,如何引用名称空间“bobzilla”frombobzilla.结构“没有”bobzilla.结构“重写它。在
注意:
设置“这个问题可能已经有了答案”的人是错误的。我已经试过了,但没用。这是两个不同的包裹,不是同一个。在
bobzilla/structure/__init__.py
应该是:使用相同的结构和问题中提到的代码来测试上述内容。
^{pr2}$bobzilla
正在/path/to/test
。结果:尝试:
一个使用
^{pr2}$NLTK
库http://nltk.org的工作示例:看起来你试图在不创建命名空间包的情况下创建一个命名空间包,这……是行不通的。在
要显式地将一个包指定为名称空间包,您需要使用^{} 库(或{}中更花哨的东西),类似于{}顶部的内容:
如果您想要一个implicit namespace package,那么可以在python3.3及更高版本中实现……但前提是
bobzilla
是空的。隐式命名空间包不能包含__init__.py
文件,并且除了它们的模块之外,永远不会有任何内容。(好吧,您可以创建一个隐式命名空间包,然后添加一个子包或外部模块,在创建后显式地向其中添加内容…但我不确定您为什么要这样做。)相关问题 更多 >
编程相关推荐