pipenv和virtualenv


pipenv

介紹

過去大家經常使用virtualenv來創建虛擬環境,通過pip freeze生成requirements.txt文件,然后通過pip install -r requirements.txt進行項目模塊的管理與安裝。這樣的安裝存在很多問題,比如每次更新模塊后,需要手動的重新生成依賴文件,等等問題。但看過今天的文章,你會更喜歡pipenv這款工具。

Pipenv: Python Development Workflow for Humans
Pipenv試圖解決的問題是多方面的:

  • 您不再需要單獨使用pip和使用virtualenv。他們一起工作。
  • 管理requirements.txt文件可能會有問題,因此Pipenv使用即將推出的文件Pipfile,Pipfile.lock而這對於基本用例來說是優越的。
  • 哈希總是隨處可見。安全。自動暴露安全漏洞。
  • 讓您深入了解您的依賴圖(例如$ pipenv graph)。
  • 通過加載.env文件簡化開發工作流程。

這哥們所有的庫,都是for Humans,要不要上升這么高的高度...

pipenv安裝

pip install pipenv即可輕松完成安裝...
之后創建一個我們的項目目錄並進入目錄輸入:pipenv install 創建目錄對應的虛擬機。
虛擬機創建目錄:

  • windows : %homepath%.virtualenvs\projectname-隨機碼
  • Linux\Mac: ~/.local/share/virtualenvs/projectname-隨機碼

虛擬機創建完成后,會在項目目錄內生成兩個包管理文件文件Pipfile、Pipfile.lock

Pipfile
修改pip源

pipenv shell 進入虛擬機
之后線比急着下載模塊,我們需要先修改pip源,因為默認的源官方源速度太慢且連接不穩定。網上說的什么命令行修改的,你趁早別用老老實實的進入Pipfile文件內部修改。

 
修改pip源

source的標紅兩個地方需要注意,我用的是阿里的鏡像,所以verify_ssl無需修改,但是有些鏡像是http協議的,你需要吧verify_ssl改為false,否則報錯無法使用。
模塊安裝

我們看到PIPfile中有兩個section標簽,一個是dev-packages,一個是packages,這兩個有什么區別呢?
pipenv install flask此時,我們安裝的是packages
pipenv install watchdog --dev 此時,我們安裝的是dev-packages
這兩者有什么區別呢?比如我們在開發的過程中會引入一些工具,但這些工具在交付或者上線的時候無需安裝,此時我們可以使用--dev的方式安裝,而客戶在初始化安裝時使用pipenv install就不會將開發使用的模塊劑型安裝,針對環境進行模塊分離,是否很犀利?

Pipfile.lock

剛才說到了Pipfile,那么Pipfile.lock這個文件又是干嘛的?
Pipfile.lock是一個json文件,詳細記錄了,我們安裝的每一個模塊及模塊的詳細信息,如:名稱、版本、Hash值。這樣安裝卸載變得更為容易與准確。

模塊依賴展示

這個功能是pipenv比較人性化的一個命令行。類似於npm list,會將我們安裝的包進行依賴樹展示,如下圖:

 

 

pipenv依賴樹
項目遷移

我們之前使用的virtualenv,可以遷移至pipenv嗎?
答案是肯定的,只需要先通過pipenv install -r requirements.txt將原有的模塊進行遷移,之后使用
同樣的,從pipenv遷移至virtualenv項目,也可以使用pipenv run pip freeze 生成requirements.txt。

.env介紹

在虛擬機中,我們的環境信息如何保存呢?比如郵箱,入口方法,等等...這時候我們需要使用到.env的文件。

命令集合
column column
pipenv --where 列出本地工程路徑
pipenv --venv 列出虛擬環境路徑
pipenv --py 列出虛擬環境的Python可執行文件
pipenv install 創建虛擬環境
pipenv install [moduel] 安裝包
pipenv install [moduel] --dev 安裝包到開發環境
pipenv uninstall[module] 卸載包
pipenv uninstall --all 卸載所有包
pipenv graph 查看包依賴
pipenv lock 生成lockfile
pipenv run python [pyfile] 運行py文件
pipenv --rm 刪除虛擬環境
Flask使用pipenv
.flaskenv

我們在開發Flask項目時,需要創建.flaskenv的文件,用來設置我們的相關環境變量,比如:

FLASK_APP=phraces FLASK_ENV=development 

但在使用配置文件之前,我們首先需要安裝pip install python-dotenv才能進行配置文件的讀取操作。
當我們使用flask run命令啟動flask程序時,系統會默認去尋找名為app.py的文件進行加載,但如果我們的啟動文件是phraces.py時,該如何操作?
另外,當我們添加FLASK_ENV=development時,可以監控文件變動,進行動態reload操作。這就是.flaskenv的用途

pycharm運行pipenv

我們每次通過命令行去啟動flask是否太過麻煩?能否直接通過pycharm來啟動flask的pipenv呢?當然...只需要按照下圖配置即可:

 

 

The End
(轉載自:https://www.jianshu.com/p/cdee9e4d620a)


免責聲明!

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



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