对于已安装的和作为源包的名称空间包,正确的设置是什么?

时间:2019-07-08 14:08:09

标签: python python-3.x python-import

我有一个Python 3.6虚拟环境,其中安装了两个共享共同的顶层目录shared_name的库。它不包含__init__.py。据我了解,那应该是一个隐式命名空间包(PEP 420

当我在PYTHONPATH中添加在顶层也使用该名称的源模块时,则无法找到后一个目录。当两个shared_name目录都有一个__init__.py时,或者没有一个目录时,Python找不到它。 将pkgutils.extend()添加到一个或两个__init__.py文件均无济于事。

结构如下:

lib/python3.6/site-packages/shared_name/p1
lib/python3.6/site-packages/shared_name/p2
source_package/shared_name/infrastructure.py

shared_name下没有__init__.py文件。在运行时,sys.path包含source_package,但是shared_name.__path__仅包含lib/python3.6/site-packages/shared_name,而不包含source_package

我不知道如何调试它或它可能有什么问题。 命名空间包是否不允许混合安装和源包? (对于我来说,文档对这个主题似乎无语。) 使用PYTHONVERBOSE也无济于事。例如,我不明白为什么

# destroy shared_name

发生在任何尝试过的证据之前,更不用说匹配了。

0 个答案:

没有答案