如何为Python 2和3上传通用Python轮?

时间:2015-05-25 12:17:59

标签: python python-2.7 python-3.x pypi python-wheel

我在PyPi上有一个软件包,在准备新版本时,我构建了源代码分发,构建了轮子并上传,所有这些都是使用setuptools。

但是,我发现它只上传了上传命令(pythonpython3)中使用的Python版本的轮子。

以下是我要采取的步骤:

python3 setup.py sdist
python3 setup.py bdist_wheel --universal
python3 setup.py sdist bdist_wheel upload

根据Python Packaging User Guide

  

“Universal Wheels”是纯python的轮子(即不包含编译的扩展)并支持Python 2和3

所以这对我来说似乎是正确的。

在轮子构建步骤之后,我验证了轮子已构建并且在PACKAGE-VERSION-py2.py3-none-any.whl中具有文件名格式dist但是当我使用python3 setup.py sdist bdist_wheel upload运行上传时,它会创建{{1并上传。

如果我运行PACKAGE-VERSION-py3-none-any.whl,它会执行相同操作并上传仅限Python 2的。

1 个答案:

答案 0 :(得分:16)

命令python3 setup.py sdist bdist_wheel upload创建滚轮分发。

您需要在该命令行上再次包含相同的标志:

python3 setup.py sdist bdist_wheel --universal upload

最好使用twine来管理上传内容;它将使用加密连接(setuptools使用未加密的连接,因此以明文形式发送您的用户名和密码),它允许您在上传之前检查和测试分发:

python3 setup.py sdist
python3 setup.py bdist_wheel --universal
# test the distributions
twine upload dist/*

Twine目前也是sets the 'Py versions' metadata for PyPI correctly for universal wheels唯一的工具。