我有一个包我正在使用两个不同版本的代码上传到PyPI:一个用于Python 2.7,另一个用于Python 3.5.
将此上传到PyPI的标准是什么?我是否使用两个单独的setup.py文件?
用户运行时pip install mypackage会自动下载正确的版本吗?
小智 9
TL; DR:添加python_requires上setup.py.使用twine将包上传到PyPI.
与IPython一样,它的6.0.0+仅支持Python 3.3+,而5.x仍然支持Python 2.x. 如果使用pip> = 9.0.1 安装它,pip install ipython将为Python 2选择最新的5.x,为Python 3选择最新的6.x.
setup.py首先,您需要通过将参数放在函数上来设置Requires-Python(PEP 440)元数据.setup.pypython_requiressetup()
例如,以下是setup.pyPython 2.7版本:
setup(
name='some-package',
version='2.3.3',
...,
python_requires='==2.7.*'
)
Run Code Online (Sandbox Code Playgroud)
对于Python 3.5+,只需将其更改为python_requires='>=3.5'.
当然,两个包必须具有不同的版本号.否则PyPI将拒绝一个.
您可以使用两个单独的setup.py文件来执行此操作,或者只使用一个文件并python_requires动态设置参数.
python setup.py sdist upload似乎没有将包元数据(包含Requires-Python)上传到PyPI.
我发现最简单的方法是使用麻线.
以正常方式创建一些分布:
Run Code Online (Sandbox Code Playgroud)$ python setup.py sdist bdist_wheel注册您的项目(如有必要)
用麻线上传
Run Code Online (Sandbox Code Playgroud)$ twine upload dist/*
对Python 2和3版本重复步骤1和3.
| 归档时间: |
|
| 查看次数: |
1270 次 |
| 最近记录: |