pipenv 是Kenneth Reitz大神的作品,能夠有效管理Python多個環境,各種包。過去我們一般用virtualenv搭建虛擬環境,管理python版本,但是跨平台的使用不太一致,且有時候處理包之間的依賴總存在問題;過去也常常用 pip進行包的管理,pip已經足夠好,但是仍然推薦pipenv,相當於virtualenv和pip的合體,且更加強大。pipenv開源之后,在GitHub上有很高人氣(截止於現在有9600多星)。
pipenv主要有以下特性:
(1)pipenv集成了pip,virtualenv兩者的功能,且完善了兩者的一些缺陷。
(2)過去用virtualenv管理requirements.txt文件可能會有問題,Pipenv使用Pipfile和Pipfile.lock,后者存放將包的依賴關系,查看依賴關系是十分方便。
(3)各個地方使用了哈希校驗,無論安裝還是卸載包都十分安全,且會自動公開安全漏洞。。
(4)通過加載.env文件簡化開發工作流程。
(5)支持Python2 和 Python3,在各個平台的命令都是一樣的。
下面快速介紹pipenv的基本使用,文章末尾有其github鏈接。本文的測試環境是windows下的Python3.6,對於其他平台同樣適用。
1 安裝pipenv
首先請確保安裝了python3和對應的pip3,如果你的python和pip對應的是python3.x,忽略數字3。
1 pip3 install pipenv
如下:
2 創建虛擬環境
1 mkdir project 2 cd project 3 pipenv install
如下:
初始化好虛擬環境后,會在項目目錄下生成2個文件Pipfile
和Pipfile.lock
。為pipenv包的配置文件,代替原來的 requirement.txt。
項目提交時,可將Pipfile
文件和Pipfile.lock
文件一並提交,待其他開發克隆下載,根據此Pipfile 運行命令pipenv install --dev
生成自己的虛擬環境。
Pipfile.lock
文件是通過hash算法將包的名稱和版本,及依賴關系生成哈希值,可以保證包的完整性。
3 安裝python包(module)
用pycharm先打開咱們剛剛創建的project,然后創建APP目錄,在app目錄下創建如下spider.py文件,導入requests庫,並沒有安裝這個包。
安裝requests包,命令如下:
1 pipenv install requests
詳情參見下圖:
這樣,在pycharm里就能看到requests已經可用,並且能抓取到網頁了。
4 查看安裝包及依賴關系
命令如下:
1 pipenv graph
詳情參見下圖:
4.1 通過--dev指明只安裝在開發環境中
1 pipenv install --dev requests --three
詳情如下圖:
反應在Pipfile如下:
[[source]] url = "https://pypi.python.org/simple" verify_ssl = true name = "pypi" [packages] requests = "*" [dev-packages] requests = "*" [requires] python_version = "3.6"
安裝包記錄是在[dev-packages]
部分,或是[packages]
部分。
在安裝時,指定--dev
參數,則只安裝[dev-packages]
下的包;若安裝時不定指定--dev
參數,只會安裝[packages]
包下面的模塊。
在構建新的python虛擬環境時,會自動下載安裝[requires]
下的包。
5 兼容requirements.txt 文件
5.1 pipenv可以像virtualenv一樣用命令生成requirements.txt 文件,命令如下:
1 pipenv lock -r --dev > requirements.txt
詳情如下圖:
5.2 pipenv也可以通過requirements.txt安裝包
命令參見:
1 pipenv install -r requirements.txt
這樣我們可以重用之前的requirement.txt 文件來構建我們新的開發環境,把我們的項目順利的遷到pipenv。
6 運行python代碼(py文件)
6.1 方法一: pipenv run python xxx.py
1 pipenv run python xxx.py
詳情如下:
6.2 方法二:啟動虛擬環境的shell環境
1 pipenv shell
詳情如下:
加上參數也可:
7 刪除python包(module)
刪除包的命令:
pipenv uninstall [module_name]
例如卸載之前安裝的requests包:
8 刪除虛擬環境
1 pipenv --rm
如下:
刪除虛擬環境之后,再次運行pip shell 會發現先為這個project創建虛擬環境,然后再打開shell。如下:
9 常用命令一覽
pipenv --where 列出本地工程路徑 pipenv --venv 列出虛擬環境路徑 pipenv --py 列出虛擬環境的Python可執行文件 pipenv install 創建虛擬環境 pipenv isntall [moduel] 安裝包 pipenv install [moduel] --dev 安裝包到開發環境 pipenv uninstall[module] 卸載包 pipenv uninstall --all 卸載所有包 pipenv graph 查看包依賴 pipenv lock 生成lockfile pipenv run python [pyfile] 運行py文件 pipenv --rm 刪除虛擬環境
本篇完。更多內容參見:pipenv 的GitHub地址。