hurry
软件包集合提供了几个模块,如hurry.filesize
和hurry.workflow
,每个模块都可以单独安装。 hurry
模块的导入如何工作?我正在使用Python 2.7
site-packages / 中的目录结构是
site-packages/
hurry/
filesize/
__init__.py
filesize.py
tests.py
README.txt
hurry.filesize-0.9-py2.7-nspkg.pth
hurry.filesize-0.9-py2.7.egg-info/
dependency_links.txt
...
hurry / 文件夹中没有__init__.py
,但我可以将其导入,并将其视为内置模块。
>>> import hurry
>>> hurry
<module 'hurry' (built-in)>
这是如何工作的?如果没有hurry
文件,为什么我可以导入__init__.py
?如何为自己的软件包实现此功能?
答案 0 :(得分:0)
得到了魔力。这是__init__.py
包的hurry
文件:
# 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'], # <<<
...
)