python - pep 420 setup.py 中的namespace_packages用途

标签 python setuptools distutils

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

我玩了一下,发现无论我是否声明命名空间包,没有区别。 “setup.py install”和“pip install”。无论如何都有效。

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

最佳答案

只要你:

  • 目标是安装了 importlib2 依赖项的 Python 3.3 及更高版本或 Python 2.7(Python 2 的 importlib 向后移植),
  • 使用最新版本的setuptools进行打包(我认为应该是28.8或更高版本)
  • 并使用最新的 pip 版本进行安装(9.0 及更高版本就可以了,8.1.2 可能也可以工作,但您应该自己测试一下),

出于安全考虑,您可以放心地在安装脚本中省略 namespace_packages 关键字参数。

有一个PyPA's official repository named sample-namespace-packages on GitHub其中包含针对已安装的发行版的不同可能场景的一组测试,其中包含每种 namespace 包。如您所见,使用隐式命名空间包的示例包在其设置脚本中不使用 namespace_packages arg(此处为 one of the scripts )以及 pep420 类型的所有测试code> 和 cross_pep420_pkgutil 在 Python 3 上传递;这是the complete results table .

关于python - pep 420 setup.py 中的namespace_packages用途,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50280138/

相关文章:

python - Twistedmatrix,每周轮换日志并自定义日志名称

python - python sklearn中的拟合方法

python - 如何将控制台脚本/入口点添加到调用类函数 python 的 setup.py

python - 如何访问python包中的pickle数据

python - 为预构建的仅 C 扩展模块创建 Python 包

python - 使 python pip 找出要下载的正确包版本

python - 如何使用 PyMongo 迭代和更新文档?

python - 如何从包含的脚本中找到与我的 python 包一起安装的其他文件?

Python3 共享扩展不链接库依赖

python - 无法在 Django 中保存不同的日期格式