溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

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

發(fā)布時間:2020-07-19 21:55:24 來源:網(wǎng)絡(luò) 閱讀:4244 作者:平山 欄目:編程語言

一 前言

最近我們的檀神在學(xué)習(xí)python時提了一個很好的問題,讓我覺得有必要把它梳理下分享給更多的學(xué)習(xí)者。劇情回顧:檀神安裝了python3的版本,想在我16年基于python2寫的工具的基礎(chǔ)上增加功能,但發(fā)現(xiàn)工具的一個模塊還不支持python3。這就尷尬了,是要重裝python2的版本?還是用python3的模塊重寫工具?不管哪種方式,似乎都挺折騰。其實,這只是python版本管理、包管理領(lǐng)域的一個問題縮影,也是本文介紹pipenv的原因。

提起python包管理,pythoner們會毫不猶豫的說出pip, easy_install;提起python虛擬開發(fā)環(huán)境,又會異口同聲的答出virtualenv, pyvenv。是的,他們都是非常優(yōu)秀、高效的管理工具,但本文要提的是另一款利器pipenv,也是python官方推薦的包管理工具,它出自Kenneth Reitz之手。提起這位老兄,稱他為python領(lǐng)域最偉大的工程師、天才程序員,一點不為過,響當(dāng)當(dāng)?shù)腞equests就是他的杰作,又精通攝影,標(biāo)準(zhǔn)的斜杠青年。

二 簡介

Pipenv ,全稱為Python Development Workflow for Humans,旨在為開發(fā)項目自動創(chuàng)建和管理虛擬環(huán)境并管理 Python 包,簡言之,就是virtualenv 和pip的集合體,通過創(chuàng)建指定python版本的虛擬環(huán)境和安裝依賴包,提供各個項目隔離的開發(fā)環(huán)境。

引用官方的話說,使用pipenv可以解決如下問題:

  1. 我們不需要在單獨使用pip和virtualenv,pipenv集合了二者功能;

  2. 使用 requirements.txt 可能會有問題,所以pipenv 使用 pipfile 和 pipfile.lock,如果pipfile不存在就自動創(chuàng)建,而且在安裝、升級、移除依賴包的時候會自動更新 pipfile 和 pipfile.lock 文件;

  3. 廣泛使用 Hash 校驗,保證安全性;

  4. 調(diào)用 pipenv graph 可以清晰地查看 Python 包及其關(guān)系;

  5. 可通過自動加載 .env 讀取環(huán)境變量,簡化開發(fā)流程;

那pipfile和pipfile.lock又是什么作用呢?

pipfile 的作用類似 requirements.txt,用于標(biāo)識該項目依賴包的基本信息,還區(qū)分了生產(chǎn)環(huán)境和開發(fā)環(huán)境的包標(biāo)識。pipfile.lock 詳細標(biāo)識了該項目安裝的包的精確版本信息、最新可用版本信息和當(dāng)前庫文件的 hash 值,起到版本鎖定的作用。即,如果項目部署到其他地方,通過該文件安裝指定的版本,而不是默認的安裝最新版本,避免一些庫因版本更新導(dǎo)致的不兼容問題。

三 安裝

本文簡單介紹在windows平臺pipenv的安裝和使用方法,可以使用pip直接安裝,作者使用python3版本,對應(yīng)的是pip3,所以安裝命令如下:

pip3 install pipenv

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

pipenv –version

四 使用

假如我們想使用selenium2的版本,但目前環(huán)境已經(jīng)安裝了selenium3版本,現(xiàn)在用pipenv創(chuàng)建一個虛擬環(huán)境,在該環(huán)境里安裝selenium2。這樣,既可以滿足開發(fā)要求,又不至于卸載重裝本機環(huán)境的包版本。
1. 查看本機環(huán)境版本,如下命令:

pip show selenium

輸出顯示如下:

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

2.    創(chuàng)建項目目錄,并創(chuàng)建虛擬環(huán)境:
項目目錄創(chuàng)建好后,用如下命令驗證是否創(chuàng)建虛擬環(huán)境:

pipenv --venv

輸出如下:

No virtualenv has been created for this project yet!

說明當(dāng)前項目目錄沒有創(chuàng)建虛擬化環(huán)境,用如下命令創(chuàng)建環(huán)境:

pipenv --three 或 pipenv -- two

其中,three代表創(chuàng)建python3環(huán)境,two代表創(chuàng)建python2環(huán)境,或用–python指定特定的python版本,但前提是都要提前安裝好python。
執(zhí)行創(chuàng)建虛擬環(huán)境命令后,輸出如下:

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.

說明環(huán)境創(chuàng)建成功,使用python3.6.3的解釋器。

3.    切換到虛擬環(huán)境
切換環(huán)境的命令如下:

pipenv shell

輸出如下:

Launching subshell in virtual environment…
Microsoft Windows [版本 10.0.15063]
(c) 2017 Microsoft Corporation。保留所有權(quán)利。

(Test-gftU5mTd) E:\Test>

路徑前的(Test-gftU5mTd)標(biāo)識已經(jīng)切換到虛擬環(huán)境了。

4.    在虛擬環(huán)境安裝selenium2
因為本地環(huán)境已經(jīng)安裝了selenium3,我們使用如下命令可以在虛擬環(huán)境安裝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

由此可知,虛擬環(huán)境已安裝了selenium2,且與本地的開發(fā)環(huán)境是隔離的,其他包安裝方法相同,不在贅述。

5.    退出虛擬環(huán)境
虛擬環(huán)境使用完畢,用exit即可退出,虛擬環(huán)境安裝的包與外部環(huán)境是隔離的,所以,不用擔(dān)心包版本引起的問題。

五 總結(jié)

本文由具體問題引出了對pipenv的介紹,作為pip和virtualenv的結(jié)合體,可以方便地創(chuàng)建和管理 Python 虛擬環(huán)境、管理 Python 包。使用它可以輕松解決多版本、多環(huán)境的問題,值得推薦和學(xué)習(xí)。

六 其他資源

關(guān)于python學(xué)習(xí)、分享、交流,筆者開通了微信公眾號【小蟒社區(qū)】,感興趣的朋友可以關(guān)注下,歡迎加入,建立屬于我們自己的小圈子,一起學(xué)python。


向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI