學會使用pip管理Python包 | 第82期

目前流行的Python包管理工具有很多,比如 Anaconda、easy_install 和 pip。初學者對於Python的運行機制和包管理方式都不太熟悉,很容易選擇 Anaconda 這樣的集成環境,但這並不是一種好的選擇。

集成的開發環境除了對初學者容易上手一點,沒有別的好處,反而導致包的配置不靈活,包的版本陳舊以及可能引起系統配置環境衝突等等。相比之下,pip 是一款更加優秀的包管理器。接下來就對 pip 的基本使用和一些常見問題稍加討論,讓每一個Python開發者都能管理好第三方模塊;同時提供一些安裝加速的方法,畢竟這是國內一個很讓人頭疼的問題。

1 常用指令

(1) 包的安裝和卸載

如果你想要安裝一個名為 pkg_name 的包,可以直接運行以下指令:

<code>pip install pkg_name/<code>

如果你想卸載一個名為 pkg_name 的包,可以直接運行以下指令:

<code>pip uninstall pkg_name/<code>

這兩條大概是我們在進行Python包管理時最常用的指令。但是有一個問題,如果依賴的10個包需要安裝,那麼每次安裝開發環境都要運行10遍這個指令嗎?當然是不用的。在這種情況下,我們常常將依賴的包名和對應的版本寫入一個 requirements.txt 文件,然後直接運行以下指令:

<code>pip install -r requirements.txt/<code>

這個 requirements.txt 的內容大概可以像這樣寫:

<code>numpy/<code>

如果你想安裝某一個歷史版本,而不是最新版,可以填寫以下內容:

<code>numpy==1.16.4/<code>
學會使用pip管理Python包 | 第82期

pip安裝第三方包的內部流程

(2) 包的升級

有時安裝一些新的第三方包之後運行出錯,報錯顯示依賴包的版本過低,需要升級一些包。比如,需要升級名為 pkg_name 的包,可以運行以下指令:

<code>pip install -U pkg_name/<code>

(3) 包的檢索和查看

如果你只是想確認一個指定名字為 pkg_name 的包是否存在於Pypi服務器中,可以使用以下指令:

<code>pip search pkg_name/<code>

如果你想查看本地已經安裝的包的名和版本,可以運行以下指令:

<code>pip list/<code>

上述的指令中,真正常用的指令其實只有安裝和卸載兩個,其他的只是偶爾需要用到。所以如果感覺稍顯複雜,只需記住 install 和 uninstall 兩個指令即可。

2 安裝加速

由於眾所周知的原因,國內訪問 Pypi 服務器上的內容會非常慢,所以在使用 pip 安裝的時候也會遇到這個問題。

對於 Linux 或者 MacOS用戶,如果已經開啟了一些跨網絡訪問的軟件,可以通過設置 https_proxy 來加速,但這個方法有時也並不快。以下介紹兩種比較快的方法。

在運行 pip install 安裝第三方包的時候,命令行頁面會顯示現在包的URL地址。我們可以把這個地址複製下來,然後使用下載器來加速下載。下載完成之後,會得到一個 pkg_name.whl 文件。只需運行

<code>pip install pkg_name.whl/<code>

就可以從本地的文件安裝了。這就是一種方法,也是建立在你有一個可以加速的下載器的情況下。

此外,還有另一種辦法,修改下載源地址。

我們知道,pip 直接安裝的原理是從 Pypi服務器上拉取對應的安裝包,如果能有更快的下載源服務器,就可以更快地安裝了。國內有一些源都不錯,這裡推薦一個清華大學的鏡像源服務器。在 Home 目錄下的 .pip 目錄下創建一個名為 pip.conf 的文件,其內容如下:

<code>[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple
[install]
trusted-host = pypi.tuna.tsinghua.edu.cn/<code>

然後就可以愉快地使用 pip 指令飛快地安裝第三方模塊了。

學會使用pip管理Python包 | 第82期

pip從清華源服務器安裝內部流程

3 常見錯誤

(1) 權限錯誤

在 Linux 或者 MacOS中使用這種指令時,有可能會遇到與權限有關的報錯,這時就看你是打算將包安裝到系統的目錄下,還是用戶目錄下。如果打算安裝到系統目錄下,就在開頭加上 sudo 如果想安裝在用戶目錄下,就在最後加上 --user。

(2) 升級pip後報錯

在 Linux 或者 MacOS中,由於自帶的 pip 工具的版本十分陳舊,所以往往需要升級。升級過程往往也是沒有問題的,但是升級完成之後,再運行 pip 指令就會報錯。錯誤信息顯示是某一個模塊不存在。這是 pip 可執行文件中有錯。可以使用 which pip 查看這個可執行文件的位置,一般是 “/usr/bin/pip” 文件。將該文件的第9行改成如下:

<code>from pip import __main__/<code>

該文件的第11行改成如下:

<code>sys.exit(__main__._main())/<code>

經過以上修改之後,就可以正常使用了。

注意在修改之前,務必先備份一下原始文件。

(3) 網絡超時

如果安裝的命令行一直在打印網絡鏈接超時相關的警告信息,那麼說明你的網絡可能無法訪問互聯網。這就只能排查網絡故障了。

pip 工具還有很多其他的很多命令字,但是從使用經驗來看,很少用到。如果你已經打算編寫Pyton程序,那麼最好還是學會使用一點命令,因為總會用得著。而 pip 現在已經成了Python的標準配置,最新的安裝程序中都自帶了pip,簡直就是Python的親兒子。這種情況下,pip 自然就是最好的選擇了。

題外:

頻道資源,可以私信關鍵字獲取。

Python編程問題諮詢,請發送關鍵字【諮詢

獲取leetcode源代碼,請發送關鍵字【

leetcode

獲取書籍,請發送關鍵字【書籍


分享到:


相關文章: