python pip教學 - 如何緩存下載的PIP包



pip安裝 python套件離線 (4)

這個問題在這裡已有答案:

你如何防止PIP重新下載以前下載的軟件包? 我正在測試matplotlib的安裝,這是一個11MB的軟件包,依賴於幾個特定於發行版的軟件包。 每次我運行pip install matplotlib ,它都會重新下載matplotlib。 我怎麼阻止這個?


Answers

對於新的Pip版本:

默認情況下,較新的Pip版本現在緩存下載。 請參閱此文檔:

https://pip.pypa.io/en/stable/reference/pip_install/#caching

對於舊Pip版本:

創建名為~/.pip/pip.conf的配置文件,並添加以下內容:

[global]
download_cache = ~/.cache/pip

在一個命令中:

printf '[global]\ndownload_cache = ~/.cache/pip\n' >> ~/.pip/pip.conf

你可以

# download and extract package to build path
pip install --no-install matplotlib

# the build path could be found by 
pip install --help|grep Unpack\ packages\ into -A 2

# then rm pip-delete-this-directory.txt inside the build path
# this prevent pip from removing package from the build directory after install
# you could check the content of the file
rm build/pip-delete-this-directory.txt

# from now on you could install matplotlib quickly
# this uses single build directory 
# and can speed up compiling by caching intermediate objects.
pip install --no-download matplotlib

此外,您可以手動下載該程序包

pip install -d dir_for_packages matplotlib

然後通過un-tar和python setup install稍後安裝它。

pip install --download-cache以類似的方式工作,帶有額外的檢查:它首先從web搜索目標包的最新版本或指定版本,如果搜索結果並且在download-cache指定的目錄中有緩存包download-cache ,將使用緩存的包而不是下載。 例如,

pip install --download-cache . pymongo

將pymongo軟件包下載到當前目錄:

http%3A%2F%2Fpypi.python.org%2Fpackages%2Fsource%2Fp%2Fpymongo%2Fpymongo-2.1.1.tar.gz
http%3A%2F%2Fpypi.python.org%2Fpackages%2Fsource%2Fp%2Fpymongo%2Fpymongo-2.1.1.tar.gz.content-type

您可以使用特定的環境變量PIP_DOWNLOAD_CACHE,並使其指向將存儲包的目錄。 如果要再次安裝它們,它們將從此目錄中獲取。

PIP pip --download-cache似乎還有一個額外的選項pip --download-cache應該做類似的事情,但我自己從未嘗試過。 對於您的示例,為避免每次重新下載matplotlib ,您將執行以下操作:

pip install --download-cache /path/to/pip/cache matplotlib

這是否回答你的問題?


我運行了下面的命令,它從1.2.3升級到1.4.0

pip install Django --upgrade

升級快捷方式:

pip install Django -U

注意 :如果您正在升級的軟件包有任何要求,此命令將另外將所有要求升級到可用的最新版本。 在最近的pip版本中, 您可以通過--upgrade-strategy only-if-needed指定--upgrade-strategy only-if-needed來防止此行為--upgrade-strategy only-if-needed 。 使用該標誌,依賴關係將不會升級,除非相關軟件包的安裝版本不再滿足升級軟件包的要求。





python pip