在 setup.py 中包含最小 pip 版本
Include minimum pip version in setup.py
我已经为我的应用程序创建了一个 setup.py。我在 install_requires 中设置的一些依赖项需要 pip 版本 19.3.1 或更高版本。
有没有办法在 setup.py 中检查 pip 版本?并在构建之前升级 pip?
您没有责任在您的项目中针对其他项目的打包问题构建解决方法。这是一种不好的做法。无论如何,作为 setup.py
的一部分执行此操作也没有多大意义,因为在许多情况下,此文件不会在 安装时间 .
期间执行
你能做的最好的事情就是尝试直接修复这些依赖项项目的错误打包:联系维护者、提交问题、提出修复等。
第二好的事情是告知用户您的项目。在您自己的项目的文档中清楚地说明这个问题以及如何防止它(即“安装 pip 版本 19.3.1 或更高版本”)。
更新:
如果您决定强制检查 setup.py
,这里有一些技巧可能会有所帮助...
但我仍然反对这些,因为您的 setup.py
实际上并不是这里的错误,但问题似乎出在依赖项的打包上。
1.
__requires__ = ['pip >= 19.3.1'] # make sure it's before 'import setuptools'
import setuptools
setuptools.setup(
# ...
)
这会触发异常:
pkg_resources.DistributionNotFound: The 'pip>=19.3.1' distribution was not found and is required by the application
此技术的缺点是当从 pip 调用时它不会触发(例如:pip install .
),因为在那种情况下 __main__
模块不是 setup.py
而是 pip.
的一个模块
参考:
- https://setuptools.readthedocs.io/en/stable/pkg_resources.html?highlight=requires#workingset-objects
2.
import pkg_resources
import setuptools
pkg_resources.require(['pip >= 19.3.1'])
setuptools.setup(
# ...
)
这会触发 pkg_resources.VersionConflict
异常。
即使从 pip 调用,这也应该有效,但是...
这似乎不适用于 build isolation(PEP 517,pyproject.toml
),因为在这样的在构建环境中通常根本没有 pip 的情况下。
参考:
我已经为我的应用程序创建了一个 setup.py。我在 install_requires 中设置的一些依赖项需要 pip 版本 19.3.1 或更高版本。
有没有办法在 setup.py 中检查 pip 版本?并在构建之前升级 pip?
您没有责任在您的项目中针对其他项目的打包问题构建解决方法。这是一种不好的做法。无论如何,作为 setup.py
的一部分执行此操作也没有多大意义,因为在许多情况下,此文件不会在 安装时间 .
你能做的最好的事情就是尝试直接修复这些依赖项项目的错误打包:联系维护者、提交问题、提出修复等。
第二好的事情是告知用户您的项目。在您自己的项目的文档中清楚地说明这个问题以及如何防止它(即“安装 pip 版本 19.3.1 或更高版本”)。
更新:
如果您决定强制检查 setup.py
,这里有一些技巧可能会有所帮助...
但我仍然反对这些,因为您的 setup.py
实际上并不是这里的错误,但问题似乎出在依赖项的打包上。
1.
__requires__ = ['pip >= 19.3.1'] # make sure it's before 'import setuptools'
import setuptools
setuptools.setup(
# ...
)
这会触发异常:
pkg_resources.DistributionNotFound: The 'pip>=19.3.1' distribution was not found and is required by the application
此技术的缺点是当从 pip 调用时它不会触发(例如:pip install .
),因为在那种情况下 __main__
模块不是 setup.py
而是 pip.
参考:
- https://setuptools.readthedocs.io/en/stable/pkg_resources.html?highlight=requires#workingset-objects
2.
import pkg_resources
import setuptools
pkg_resources.require(['pip >= 19.3.1'])
setuptools.setup(
# ...
)
这会触发 pkg_resources.VersionConflict
异常。
即使从 pip 调用,这也应该有效,但是...
这似乎不适用于 build isolation(PEP 517,pyproject.toml
),因为在这样的在构建环境中通常根本没有 pip 的情况下。
参考: