無用的小知識 python pip 批量離線安裝


最近遇到個問題,在外網被擋住的情況下,如何在內網(離線環境)以最省力的方式安裝三方庫及其依賴包。

正常情況的下,如果我們要在離線環境下安裝有依賴的軟件包會出現以下情況:

    pip install yyy                    安裝yyy包

      -> error, requirement xxx       報錯,缺失依賴包 xxx

        -> pip install xxx                     安裝依賴包 xxx

        -> pip install yyy                     安裝yyy包

        -> success                               成功

下面我以離線模式下安裝scipy為例,安裝scipy有個前置需求那就是numpy,如果在沒裝numpy的情況下安裝scipy會出現報錯的情況。

安裝指令 

python -m pip install scipy-1.6.3-cp37-cp37m-win_amd64.whl

 

如此我需要先安裝numpy在安裝scipy才可以成功,但這畢竟太麻煩了,如果能在我安裝scipy的時候它自動把numpy裝上就更好了。

 

於是我在網上查找的很多方法終於pip官方文檔中看到了個驚喜。

PIP
  --no-index

  Ignore package index (only looking at --find-links URLs instead).

  -f--find-links <url>

  If a URL or path to an html file, then parse for links to archives such as sdist (.tar.gz) or wheel (.whl) files. If a local path or file:// URL that’s a directory, then look for archives in the directory listing. Links to VCS project URLs are not supported.

 

簡單翻譯就是: 

  --no-index:  

        忽略軟件包索引(僅查看--find-links URL)。

  --find-links <url>: 

        如果是指向html文件的URL或路徑,則解析到諸如sdist(.tar.gz)或wheel(.whl)等文件的鏈接。如果目錄是本地路徑或file:// URL,則在目錄列表中查找檔案。不支持指向VCS項目URL的鏈接。

顯而易見我們可以組合這兩個command來實現當我安裝 scipy 時他 --no-index 指令會阻止pip默認的索引位置(pypi.org)而--find-links會使pip在指定目錄檢索是否有 scipy 包以及其依賴包 numpy 並安裝,這樣我就不用敲兩次pip install了。

說了這么多,直接亮代碼。

 

pip install --no-index --find-links=指定的路徑 scipy==1.6.3

 

當然不僅是單包也可以批量安裝多個包,指令如下: requirement.txt

pip install --no-index --find-links=指定的路徑 -r requirement.txt

結果如下:

媽媽再也不用擔心我在跑回圈了!一條指令解放雙手!

 

也是第一次寫博客,如果本篇內容有不對的地方歡迎大家指出我會重新修改。

我們的征途是星辰大海

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM