命名空间包的注意事项是什么

What are the caveats of namespace packages

提问人:Dante 提问时间:1/11/2023 更新时间:1/11/2023 访问量:79

问:

Packaging 命名空间包中,提到

命名空间包对于大量 松散相关的包(例如客户端库的大型语料库 对于来自一家公司的多种产品)。但是,命名空间 软件包带有一些注意事项,并非完全合适 例。一个简单的替代方法是在所有 诸如 import 之类的发行版(您可以 甚至使用导入作为保留 import 对象 short)。mynamespace_subpackage_amynamespace_subpackage_asubpackage_a

但是没有例子。最好使用替代方案?

Python 打包

评论

0赞 wim 1/11/2023
多个不同的发行版共同负责管理文件树,这大大增加了安装程序/卸载程序的工作(谁拥有命名空间本身?谁应该在站点包中创建/销毁子目录?)。一堆现有的工具对于命名空间包来说是完全破坏的。似乎很少有人使用它们,或者只是忘记了它们的存在,因此与命名空间打包相关的错误往往会徘徊很长时间。我避开他们。

答:

2赞 J_H 1/11/2023 #1

没有例子。

文档引用了以下示例:

https://github.com/pypa/sample-namespace-packages/tree/master/native

该文档是在 python2 日落之前编写的。 设计同时支持 {2,3} 的解决方案 将涉及几个警告。

TL的;dr:鉴于你现在应该以 python3 为目标, 和 3.3+ 在那个, 那么使用命名空间包就非常有意义了。 (当前发布的解释器是 3.11。

评论

0赞 chepner 1/11/2023
这个答案可以通过引用相关例子来改进,而不仅仅是参考场外资源。