Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/355.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python “匆忙”软件包导入如何工作?_Python_Python 2.7_Import_Package - Fatal编程技术网

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'], # <<<
    ...
)