一、簡介
Pipenv,它的項目簡介為 Python Development Workflow for Humans,是 Python 著名的 requests 庫作者 kennethreitz 寫的一個包管理工具,它可以為我們的項目自動創建和管理虛擬環境並非常方便地管理 Python 包,現在它也已經是 Python 官方推薦的包管理工具。
Pipenv 我們可以簡單理解為 pip 和 virtualenv 的集合體,它可以為我們的項目自動創建和管理一個虛擬環境。virtualenv 在使用時我們需要手動創建一個虛擬環境然后激活,Pipenv 會自動創建。另外我們之前可能使用 requirements.txt 文件來標識項目所需要的依賴,但是這樣會帶來一些問題,如有的 requirements.txt 中只是將庫名列出來了,沒有嚴格指定版本號,這樣就可能會導致不同時間安裝的庫版本是不同的,如 requirements.txt 文件中對 Django 的依賴只寫了一個 django
,可能在 2016 年的時候運行安裝會安裝 Django 的 1.x 版本,到了 2017 年就會安裝 Django 的 2.x 版本,所以可能導致一些麻煩。為了解決這個問題,Pipenv 直接棄用了 requirements.txt,會同時它會使用一個叫做 Pipfile 和 Pipfile.lock 的文件來管理項目所需的依賴包,而不再是簡單地使用 requirements.txt 文件來記錄項目所需要的依賴。
總的來說,Pipenv 可以解決如下問題:
- 我們不需要再手動創建虛擬環境,Pipenv 會自動為我們創建,它會在某個特定的位置創建一個 virtualenv 環境,然后調用
pipenv shell
命令切換到虛擬環境。 - 使用 requirements.txt 可能會導致一些問題,所以 Pipenv 使用 Pipfile 和 Pipfile.lock 來替代之,而且 Pipfile 如果不存在的話會自動創建,而且在安裝、升級、移除依賴包的時候會自動更新 Pipfile 和 Pipfile.lock 文件。
- 廣泛使用 Hash 校驗,保證安全性。
- 可以更清晰地查看 Python 包及其關系,調用
pipenv graph
即可呈現,結果簡單明了。 - 可通過自動加載 .env 讀取環境變量,簡化開發流程。
pipenv是pip的升級版,超好用,是requests作者K神搞出來的,就是一個字,真TaM香!
pycharm打開項目后在settings中給項目配置本地解釋器環境
第二步:【安裝pipenv】
直接在底部打開命令行,會自動就切入項目內部,或者打開cmd命令窗口,然后自己cd到項目根目錄,如果之前沒有用過pipenv,就直接:
pip install pipenv
檢查是否成功:
pipenv --version
第三步:【創建虛擬環境、安裝依賴包】
-
情況一:你拿來的項目一般自帶Pipfile.py和Pipfile.lock,這個就是pipenv的強大之處所在,每一次安裝卸載模塊、項目解釋器、源信息等,會自動的動態記錄在這里面,項目如果有這兩個文件,在命令行中切入到Pipfile.py所在目錄執行,比如下圖就要切入src/wibot:(如果你在主目錄的話看不到Pipfile.py,創建出來的環境里面沒有模塊)
-
情況二:新建項目沒有Pipfile.py等文件,直接install后會自動生成的,只是空的而已,然后你安裝什么模塊時他會自動更新記錄
pipenv install
即可完成虛擬環境創建、安裝所有需要的依賴,超強大,賊好用
查看所有安裝模塊
pipenv graph
他會在C:\Users\13154.virtualenvs(也可以自定義,網上有教程)里面自動為項目創建一個虛擬的包管理文件
其中包含隔離的Python解釋器環境,並且安裝pip、wheel、setuptools等基本的包
第四步:【下載模塊】
以后就不要再使用pip,忘記他記好了,使用pipenv 來代替pip,命令格式相似
eg:pipenv install pymysql
第五步:【啟動項目】
-
方式一:因為使用了pipenv,所以不要再使用pip啟動,使用它你就找不到pipenv安裝的一系列模塊,我們直接使用pipenv啟動:
eg: pipenv run python robot_run.py
-
方式二:鼠標右鍵啟動、頂部綠色小三角啟動(pycharm默認是使用pip的,不能直接用需要自定義,,設置好后就可以快捷啟動了)
注意事項:
1.你使用pipenv安裝的包,pycharm可能識別不了,就會飄紅,不影響運行
2.settings中的解釋器環境可以全程使用自己的本地真實環境,不用切換到pipenv創建的虛擬環境,你使用pipenv命令啟動就好了