pep 420命名空间_包的用途设置.py

2024-05-23 19:18:41 发布

您现在位置:Python中文网/ 问答频道 /正文

namespace_packages参数的用途是什么设置.py在使用PEP420命名空间包时(不带u init_uu.py的包)?在

我使用它,发现无论是否声明名称空间包都没有区别。 "设置.py“安装”和“pip install.”在任何情况下都有效。在

我正在建造一个自动装置设置.py代码生成器,如果没有必要的话,我们很乐意不处理这个问题。在


Tags: installpippy名称声明参数initpackages
2条回答

命名空间包是安装在一个顶级名称下的单独的包。在

通常两个不同的包(例如SQLObjectCheetah3)安装两个(或更多)不同的顶层包(sqlobject和{})。在

但是,如果我有一个库,我想把它分成几个部分,并且允许在没有库的其他部分的情况下安装这些部分呢?我使用命名空间包。示例:这两个包是一个库的两个部分:m_lib和{a4}。一个安装可以单独使用的m_lib/defenc.py,另一个安装m_lib库的其余部分。为了一次安装整个库,我还提供了m_lib.full。在

注:所有提到的包裹都是我的。源代码在Githubmy personal git hosting处提供。在

只要你:

  • 针对Python3.3及更高版本或安装了importlib2依赖关系的python2.7(python2的后端端口是importlib
  • 使用最新版本的setuptools进行打包(我认为应该是28.8或更高版本)
  • 并使用最新的pip版本进行安装(9.0及更高版本可以,8.1.2可能也可以,但您应该自己测试)

您是安全的,可以安全地省略安装脚本中的namespace_packages关键字arg。在

有一个PyPA's official repository named ^{} on GitHub包含一套测试,用于安装包含每种名称空间包的发行版的不同可能场景。如您所见,使用隐式名称空间包的示例包在其设置脚本中没有使用namespace_packagesarg(这里是one of the scripts),并且在Python3上通过pep420和{}类型的所有测试;这里是the complete results table。在

相关问题 更多 >