JLu*_*ton 7 python pip setup.py
我为我的应用程序创建了一个 setup.py。我在 install_requires 中设置的一些依赖项需要 pip 版本 19.3.1 或更高版本。
有没有办法检查 pip 版本作为 setup.py 的一部分?并在构建之前升级 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(
# ...
)
Run Code Online (Sandbox Code Playgroud)
这会触发异常:
__requires__ = ['pip >= 19.3.1'] # make sure it's before 'import setuptools'
import setuptools
setuptools.setup(
# ...
)
Run Code Online (Sandbox Code Playgroud)
这种技术的缺点是,当从pip调用时它不会触发(例如:pip install .),因为在这种情况下,该__main__模块不是pipsetup.py的模块。
参考:
2.
import pkg_resources
import setuptools
pkg_resources.require(['pip >= 19.3.1'])
setuptools.setup(
# ...
)
Run Code Online (Sandbox Code Playgroud)
这会触发pkg_resources.VersionConflict异常。
即使从pip调用,这也应该有效,但是......
这似乎不适用于构建隔离(PEP 517,pyproject.toml),因为在这种情况下,构建环境中通常根本没有pip 。
参考:
| 归档时间: |
|
| 查看次数: |
624 次 |
| 最近记录: |