小编use*_*997的帖子

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

我有一个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
Run Code Online (Sandbox Code Playgroud)

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

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

# destroy shared_name
Run Code Online (Sandbox Code Playgroud)

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

python python-import python-3.x namespace-package

10
推荐指数
0
解决办法
202
查看次数