gpt4 book ai didi

python - 具有相同顶级名称的不同 python 包

转载 作者:行者123 更新时间:2023-12-03 08:36:34 24 4
gpt4 key购买 nike

如果我安装两个具有相同顶级目录级别名称但不同包名称(由 setup.py 或其他识别方法定义)的 python 包,会发生冲突还是会合并“命名空间”?

例如,如果我有以下结构:

repo1
mypkg/
__init__.py
compiler/...
setup.cfg -> name=repo1

repo2
mypkg/
__init__.py
runner/...
setup.cfg -> name=repo2

我可以安装这两个而不发生冲突吗?如果是,我可以像这样导入它们吗:

from mypkg.runner import *
from mypkg.compiler import *

最佳答案

默认情况下,Python 只会识别两个包之一,其中一个包会在 session 中覆盖另一个包。

如果您将以下行放入 mypkg 软件包中的两个 init.py 文件中,则会将这些软件包合并在一起。

__path__ = __import__("pkgutil").extend_path(__path__, __name__)

将会发生的情况是,不是用另一个 python 覆盖一个包,而是将包的内容放入相同的 mypkg 命名空间中。

但是请注意,冲突的模块或子包不会自动解决。

因此,如果您在两个 mypkg 包中创建一个运行程序子包,则只会加载其中一个运行程序包。

关于python - 具有相同顶级名称的不同 python 包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63722558/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com