簡體   English   中英

在 setup.py 中包含最低 pip 版本

[英]Include minimum pip version in 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(
    # ...
)

這將引發異常:

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的模塊。

參考:

2.

import pkg_resources
import setuptools

pkg_resources.require(['pip >= 19.3.1'])

setuptools.setup(
    # ...
)

這將觸發pkg_resources.VersionConflict異常。

即使從pip調用,這也應該有效,但是......

這似乎不適用於構建隔離PEP 517pyproject.toml ),因為在這種情況下,構建環境中通常根本沒有pip

參考:

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM