首页 > 解决方案 > pep 420 namespace_packages setup.py 中的用途

问题描述

使用 PEP420 命名空间包(没有 __init__.py 的那些)时 setup.py中的namespace_packages参数的目的是什么?

我玩过它,发现我是否声明了命名空间包没有区别。“setup.py install”和“pip install”。在任何情况下都有效。

我正在构建一个自动 setup.py 代码生成器,如果没有必要,我很乐意不处理这个。

标签: pythonsetuptoolsdistutilspep

解决方案


只要你:

  • 针对 Python 3.3 和更新版本或importlib2安装了依赖项的 Python 2.7(importlibPython 2 的反向移植),
  • 使用最新版本的setuptools包装(我认为应该是 28.8 或更高版本)
  • 并使用最新pip版本进行安装(9.0 和更高版本会很好,8.1.2 可能也可以,但你应该自己测试),

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

GitHub上有一个名为 PyPA 的官方存储库sample-namespace-packages,其中包含一套测试,适用于已安装的不同可能场景的发行版,其中包含各种命名空间包。如您所见,使用隐式命名空间包的示例包namespace_packages在其设置脚本(这里是其中一个脚本)和所有类型测试中不使用 argpep420cross_pep420_pkgutil通过 Python 3;这是完整的结果表


推荐阅读