亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

使用 PyCharm 進行包管理

前面的章節講述了如何為項目配置解釋器,通常初始的解釋器都繼承于系統解釋器,里面包括一些常用的 Packages。但實際編寫程序過程中,我們還需要額外安裝一些第三方包,這節將主要講述如何安裝、升級與刪除包;以及如何通過 requirement.txt 或者 Pipfile 管理包的。

1. 安裝、卸載與升級包

打開項目, 訪問 Preference/Settings -> Project:項目名 -> Python Intepreter

圖片描述

Tips:默認情況下,最新版本列僅顯示包的穩定版本。如果要將最新可用版本的范圍擴展到任何預發行版本(比如 beta 版本),就可以點擊第四個按鈕(圖標像眼睛的按鈕)刷新當前列表。

1.1 安裝包

點擊按鈕 + ,在打開的"可用包"對話框中,預覽可用包的列表。
圖片描述

1.2 卸載包

  • 在包列表中,選擇要刪除的包;
  • 單擊 - 按鈕。所選包將從磁盤中刪除。

圖片描述

1.3 升級包

  • 在包列表中,選擇要升級的包;
  • 單擊 工具欄中 三角 按鈕。所選包將被升級到最新版本。

圖片描述

2. 使用 “requirement.txt” 管理包

requirements.txt 文件,用于記錄所有依賴包及其精確的版本號,以便新環境部署。

2.1 創建當前項目的 requirement.txt

點擊菜單 Tool -> Sync Python Requirements,在打開的對話框中,指定要求文件的名稱。需求文件的建議名稱是 requirement.txt。當具有此名稱的文件添加到項目根目錄后,Python 集成工具會自動檢測到該文件。
圖片描述

選擇處理所需庫版本的方法??梢远x版本號,通常我們會選擇等于。 上圖列表中的四項分別代表:

  • 不指定版本;
  • 必須等于當前版本;
  • 大于等于當前版本;
  • 兼容當前版本。

在上圖的對話框中的三個可選項,用來定義管理策略:

圖片描述

  • Remove unused Requirements: 刪除未使用的庫和包的記錄。也就是包安裝了,但在代碼一次也沒使用過,這些包名將不會出現在 requirement.txt 文件中;
  • Modify base files (defined with -r or – requirement): 允許修改基礎的requirement 文件(如果requirements.txt 任何內容都被引用了);
  • Keep existing version specifier if it matches the current version: 如果版本號滿足所選方法版本的處理方式,則保持不變。

點擊 “ok",生成下面的文件:文件中包含了此項目中所使用的的所有的包以及版本信息。
圖片描述

Tips:如果你不想用默認的“requirement.txt", 而選擇其它文件名,需要到 Settings/Preferences 下 Tools -> Python Integrated Tools,指定新的名字,這樣包才能被自動監控。

圖片描述

除此以外, 你也可以在當前項目根目錄下,你能在終端控制臺運行 pip freeze > requirements.txt 命令去生成這個文件。

圖片描述

2.2 更新 requirement.txt

你可以運行 Sync Python Requirements 來更新 requirement.txt,但 PyCharm 提供了快速修復功能。

比如在 Python 文件的 import 語句中,單擊尚未導入的包。PyCharm 建議快速修復:點擊藍色字體,就會進入 Sync Python Requirements 對話框,參考執行上面的步驟,文件會更新。

圖片描述

3. 使用 Pipfile

Pipfile 文件用于記錄虛擬環境安裝的軟件包版本。作用類似于 requirements.txt 文件,但 Pipfile 的功能更強大。 Pipfile 是 Pipenv 虛擬環境用于管理項目依賴項的專用文件,此文件對于使用 Pipenv 至關重要。當新項目或現有項目創建 Pipenv 環境時,將自動生成 Pipfile。該文件將添加到當前項目,可以在"Project"工具窗口中看到它。同樣,當您第一次使用 PyCharm 中的 Pipfile 文件打開項目時,將根據文件自動配置 Pipenv 虛擬環境。

step1:PyCharm 為Pipenv 虛擬環境自動創建 Pipfile ,文件如下所示:圖片描述

python_version 參數是創建新環境時指定的基本解釋器的版本。packages 部分是可以列出項目所需的包的位置。url 是下載包的地址。另外, [packages] 和 [dev-packages] 部分之間的區別是 [packages] 定義了生產和開發環境的要求,而 [dev-packages] 僅列出用于開發目的的要求。

Tips:PyCharm 建議安裝特定于 Pipfile 的插件。單擊相應的鏈接,安裝 Toml 的插件:

圖片描述

step2:安裝插件后,格式化顯示文件內容。通過修改 packages 部分添加新的包依賴項。

圖片描述

step3:然后在終端控制臺輸入 pipenv update 或者 pipenv lock

圖片描述

step4:查看包是否被安裝,菜單 Settings/Preferences -> Project <項目名> -> Project Interpreter, 檢查新增加的包已經安裝了。

圖片描述

step5:現在嘗試先安裝包再查看pipfile的過程,點擊上圖的 + 按鈕。選擇安裝 libopencv 包:

圖片描述

step6:安裝成功后, 再次查看 Pipfile。可以發現新安裝的包已經自動更新了:

圖片描述

Tips:運行 pipenv update 后,包安裝同時會生成一個新的文件 Pipfile.lock, 文件內容如下圖所示:
圖片描述

Pipfile 與 Pipfile 二者關系:

  • Pipfile.lock 文件顧名思義是起到版本鎖作用,用于避免版本更新導致不兼容的問題。它詳細標識了該項目的安裝的包的精確版本信息、最新可用版本信息和當前庫文件的hash值。換句話說是:凍結軟件包名稱及其版本,以及其依賴關系的列表。我們可以看到每個包都有明確的版本信息。
  • 如果只存在 Pipfile 文件,那么文中標識的依賴若為 <包名>="*",意味著沒有版本限制,將會默認安裝最新版本的包。也可指定特定版本。
  • 如果存在 Pipfile.lock 文件,那么將根據 Pipfile.lock 進行安裝指定版本的包。切勿手動修改 Pipfile.lock文件。
  • 如果 Pipfile.lock 文件不存在或被刪除,可使用 pipenv lock 命令生成。

4. 小結

本節主要講了如何維護項目中的包,包括增刪改查,相對比較簡單, 實踐幾次基本就可以掌握了。對于requirement.txt 與 pipfile 在實際項目開發中是使用頻率是比較高的,這兩個文件都會做為項目文件由版本控制工具進行管理,在多人協作項目中,保證所有人的開發環境一致性。所以,深入理解并掌握其使用作為程序員是非常必要的。
圖片描述