Prevent package from being installed on old Python versions

后端 未结 2 634
再見小時候
再見小時候 2020-12-11 15:12

What can we put in a setup.py file to prevent pip from collecting and attempting to install a package when using an unsupported Python version?

For exam

2条回答
  •  一向
    一向 (楼主)
    2020-12-11 15:27

    There is a correct way to do this, but unfortunately pip only started supporting it in version 9.0.0 (released 2016-11-02), and so users with older versions of pip will continue to download packages willy-nilly regardless of what Python version they're for.

    In your setup.py file, pass setup() a python_requires argument that lists your package's supported Python versions as a PEP 440 version specifier. For example, if your package is for Python 3+ only, write:

    setup(
        ...
        python_requires='>=3',
        ...
    )
    

    If your package is for Python 3.3 and up but you're not willing to commit to Python 4 support yet, write:

    setup(
        ...
        python_requires='~=3.3',
        ...
    )
    

    If your package is for Python 2.6, 2.7, and all versions of Python 3 starting with 3.3, write:

    setup(
        ...
        python_requires='>=2.6, !=3.0.*, !=3.1.*, !=3.2.*, <4',
        ...
    )
    

    And so on.

    Once you've done that, you will need to upgrade your version of setuptools to at least 24.2.0 in order for the python_requires argument to be processed; earlier versions will just ignore it with a warning. All of your project's sdists and wheels built afterwards will then contain the relevant metadata that tells PyPI to tell pip what Python versions they're for.

提交回复
热议问题