pipenv—不可不知的python包管理利器

一 前言

最近咱們的檀神在學習python時提了一個很好的問題,讓我以爲有必要把它梳理下分享給更多的學習者。劇情回顧:檀神安裝了python3的版本,想在我16年基於python2寫的工具的基礎上增長功能,但發現工具的一個模塊還不支持python3。這就尷尬了,是要重裝python2的版本?仍是用python3的模塊重寫工具?無論哪一種方式,彷佛都挺折騰。其實,這只是python版本管理、包管理領域的一個問題縮影,也是本文介紹pipenv的緣由。python

提起python包管理,pythoner們會堅決果斷的說出pip, easy_install;提起python虛擬開發環境,又會異口同聲的答出virtualenv, pyvenv。是的,他們都是很是優秀、高效的管理工具,但本文要提的是另外一款利器pipenv,也是python官方推薦的包管理工具,它出自Kenneth Reitz之手。提起這位老兄,稱他爲python領域最偉大的工程師、天才程序員,一點不爲過,響噹噹的Requests就是他的傑做,又精通攝影,標準的斜槓青年。nginx

二 簡介

Pipenv ,全稱爲Python Development Workflow for Humans,旨在爲開發項目自動建立和管理虛擬環境並管理 Python 包,簡言之,就是virtualenv 和pip的集合體,經過建立指定python版本的虛擬環境和安裝依賴包,提供各個項目隔離的開發環境。git

引用官方的話說,使用pipenv能夠解決以下問題:程序員

  1. 咱們不須要在單獨使用pip和virtualenv,pipenv集合了兩者功能;github

  2. 使用 requirements.txt 可能會有問題,因此pipenv 使用 pipfile 和 pipfile.lock,若是pipfile不存在就自動建立,並且在安裝、升級、移除依賴包的時候會自動更新 pipfile 和 pipfile.lock 文件;sql

  3. 普遍使用 Hash 校驗,保證安全性;shell

  4. 調用 pipenv graph 能夠清晰地查看 Python 包及其關係;windows

  5. 可經過自動加載 .env 讀取環境變量,簡化開發流程;安全

那pipfile和pipfile.lock又是什麼做用呢?微信

pipfile 的做用相似 requirements.txt,用於標識該項目依賴包的基本信息,還區分了生產環境和開發環境的包標識。pipfile.lock 詳細標識了該項目安裝的包的精確版本信息、最新可用版本信息和當前庫文件的 hash 值,起到版本鎖定的做用。即,若是項目部署到其餘地方,經過該文件安裝指定的版本,而不是默認的安裝最新版本,避免一些庫因版本更新致使的不兼容問題。

三 安裝

本文簡單介紹在windows平臺pipenv的安裝和使用方法,可使用pip直接安裝,做者使用python3版本,對應的是pip3,因此安裝命令以下:

pip3 install pipenv

使用以下命令若是輸出版本信息,也說明安裝成功:

pipenv –version

四 使用

假如咱們想使用selenium2的版本,但目前環境已經安裝了selenium3版本,如今用pipenv建立一個虛擬環境,在該環境裏安裝selenium2。這樣,既能夠知足開發要求,又不至於卸載重裝本機環境的包版本。
1. 查看本機環境版本,以下命令:

pip show selenium

輸出顯示以下:

Name: selenium
Version: 3.14.0
Summary: Python bindings for Selenium
Home-page: https://github.com/SeleniumHQ/selenium/

2.    建立項目目錄,並建立虛擬環境:
項目目錄建立好後,用以下命令驗證是否建立虛擬環境:

pipenv --venv

輸出以下:

No virtualenv has been created for this project yet!

說明當前項目目錄沒有建立虛擬化環境,用以下命令建立環境:

pipenv --three 或 pipenv -- two

其中,three表明建立python3環境,two表明建立python2環境,或用–python指定特定的python版本,但前提是都要提早安裝好python。
執行建立虛擬環境命令後,輸出以下:

Using D:\Program Files (x86)\python36\python.exe (3.6.3) to create virtualenv...
Running virtualenv with interpreter D:\Program Files (x86)\python36\python.exe
Using base prefix 'D:\\Program Files (x86)\\python36'
New python executable in C:\Users\dell\.virtualenvs\Test-gftU5mTd\Scripts\python.exe
Installing setuptools, pip, wheel...done.

說明環境建立成功,使用python3.6.3的解釋器。

3.    切換到虛擬環境
切換環境的命令以下:

pipenv shell

輸出以下:

Launching subshell in virtual environment…
Microsoft Windows [版本 10.0.15063]
(c) 2017 Microsoft Corporation。保留全部權利。

(Test-gftU5mTd) E:\Test>

路徑前的(Test-gftU5mTd)標識已經切換到虛擬環境了。

4.    在虛擬環境安裝selenium2
由於本地環境已經安裝了selenium3,咱們使用以下命令能夠在虛擬環境安裝selenium2.53.0,以下:

pipenv install selenium==2.53.0

輸出以下:

Installing selenium==2.53.0...
Collecting selenium==2.53.0
  Downloading https://files.pythonhosted.org/packages/c6/3c/b07ce83ed5a62b2eb8dd4c48f3f293197f70d63e537be14ec5d2bd328cc9/selenium-2.53.0.tar.gz (815kB)
Building wheels for collected packages: selenium
  Running setup.py bdist_wheel for selenium: started
  Running setup.py bdist_wheel for selenium: finished with status 'done'
  Stored in directory: C:/Users/dell/AppData/Local/pipenv/pipenv/Cache\wheels\a1\39\2e\c6a5d4e01e1a906d7fa2563b255202de2b9ca1b7cfea81b875
Successfully built selenium
Installing collected packages: selenium
Successfully installed selenium-2.53.0

由此可知,虛擬環境已安裝了selenium2,且與本地的開發環境是隔離的,其餘包安裝方法相同,不在贅述。

5.    退出虛擬環境
虛擬環境使用完畢,用exit便可退出,虛擬環境安裝的包與外部環境是隔離的,因此,不用擔憂包版本引發的問題。

五 總結

本文由具體問題引出了對pipenv的介紹,做爲pip和virtualenv的結合體,能夠方便地建立和管理 Python 虛擬環境、管理 Python 包。使用它能夠輕鬆解決多版本、多環境的問題,值得推薦和學習。

六 其餘資源

關於python學習、分享、交流,筆者開通了微信公衆號【小蟒社區】,感興趣的朋友能夠關注下,歡迎加入,創建屬於咱們本身的小圈子,一塊兒學python。

相關文章
相關標籤/搜索