10

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

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

以下是我正在采取的步骤:

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

根据Python 打包用户指南

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

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

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

如果我运行python setup.py sdist bdist_wheel upload它,它会执行相同的操作并上传仅 Python 2 的一个。

4

1 回答 1

25

该命令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 目前也是唯一为通用车轮正确设置 PyPI 的“Py 版本”元数据的工具。

于 2015-05-25T12:49:27.470 回答