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

ben*_*all 9 python pypi python-2.7 python-3.x python-wheel

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

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

以下是我要采取的步骤:

python3 setup.py sdist
python3 setup.py bdist_wheel --universal
python3 setup.py sdist bdist_wheel upload
Run Code Online (Sandbox Code Playgroud)

根据Python包装用户指南:

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

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

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

如果我运行python setup.py sdist bdist_wheel upload它也会执行相同的操作并上传Python 2-only.

Mar*_*ers 21

该命令python3 setup.py sdist bdist_wheel upload创建一个新的车轮分配.

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

python3 setup.py sdist bdist_wheel --universal upload
Run Code Online (Sandbox Code Playgroud)

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

python3 setup.py sdist
python3 setup.py bdist_wheel --universal
# test the distributions
twine upload dist/*
Run Code Online (Sandbox Code Playgroud)

Twine目前也是唯一能够为通用车轮正确设置PyPI的'Py版本'元数据的工具.