Python “匆忙”软件包导入如何工作?
Python “匆忙”软件包导入如何工作?,python,python-2.7,import,package,Python,Python 2.7,Import,Package,harry软件包集合提供了几个模块,如和,每个模块都可以单独安装。导入harse模块是如何工作的?我正在使用Python 2.7 site packages/中的目录结构为 匆忙/文件夹中没有\uuuuu init\uuuuuu.py,但我可以将其导入,并将其视为内置模块 >>> import hurry >>> hurry <module 'hurry' (built-in)> >>快速导入 >>>急忙 这是怎么回事?为什么导入harry时没
harry
软件包集合提供了几个模块,如和,每个模块都可以单独安装。导入harse
模块是如何工作的?我正在使用Python 2.7
site packages/中的目录结构为
匆忙/文件夹中没有\uuuuu init\uuuuuu.py
,但我可以将其导入,并将其视为内置模块
>>> import hurry
>>> hurry
<module 'hurry' (built-in)>
>>快速导入
>>>急忙
这是怎么回事?为什么导入
harry
时没有\uuuu init\uuuu.py
文件?如何为我自己的软件包实现此功能?获得了魔力。这是harse
包的\uuuu init\uuuuuu.py
文件:
# this is a namespace package
try:
import pkg_resources
pkg_resources.declare_namespace(__name__)
except ImportError:
import pkgutil
__path__ = pkgutil.extend_path(__path__, __name__)
同样重要的是:在setup.py中
setup(
...,
packages=['foo.bar.ham'],
namespace_packages=['foo', 'foo.bar'], # <<<
...
)
设置(
...,
packages=['foo.bar.ham'],
namespace_packages=['foo','foo.bar'],#所以诀窍是,它将harse.filesize
安装为一个包,而harse
安装为一个命名空间包?您在这里使用的是'foo'和'bar',这有点让人困惑。@Florisa是的,就是这样。
setup(
...,
packages=['foo.bar.ham'],
namespace_packages=['foo', 'foo.bar'], # <<<
...
)