Pipenv--最好用的python虛擬環(huán)境和包管理工具

pipenv 是Kenneth Reitz大神的作品擂涛,能夠有效管理Python多個環(huán)境吼具,各種包。過去我們一般用virtualenv搭建虛擬環(huán)境嫂便,管理python版本,但是跨平臺的使用不太一致狮含,且有時候處理包之間的依賴總存在問題顽悼;過去也常常用 pip進行包的管理,pip已經(jīng)足夠好几迄,但是仍然推薦pipenv蔚龙,相當于virtualenv和pip的合體,且更加強大映胁。

pipenv主要有以下特性:

(1)pipenv集成了pip木羹,virtualenv兩者的功能,且完善了兩者的一些缺陷解孙。

(2)過去用virtualenv管理requirements.txt文件可能會有問題坑填,Pipenv使用PipfilePipfile.lock,后者存放將包的依賴關(guān)系弛姜,查看依賴關(guān)系是十分方便脐瑰。

(3)各個地方使用了哈希校驗,無論安裝還是卸載包都十分安全廷臼,且會自動公開安全漏洞苍在。绝页。

(4)通過加載.env文件簡化開發(fā)工作流程。

(5)支持Python2 和 Python3寂恬,在各個平臺的命令都是一樣的续誉。

下面快速介紹pipenv的基本使用,文章末尾有其github鏈接初肉。本文的測試環(huán)境是windows下的Python3.6酷鸦,對于其他平臺同樣適用。

1 安裝pipenv

首先請確保安裝了python3和對應(yīng)的pip3牙咏,如果你的python和pip對應(yīng)的是python3.x,忽略數(shù)字3臼隔。

pip3 install pipenv

如下:

image

2 創(chuàng)建虛擬環(huán)境

mkdir project
cd project
pipenv install

如下:

image

初始化好虛擬環(huán)境后,會在項目目錄下生成2個文件PipfilePipfile.lock眠寿。為pipenv包的配置文件躬翁,代替原來的 requirement.txt。

項目提交時盯拱,可將Pipfile 文件和Pipfile.lock文件一并提交盒发,待其他開發(fā)克隆下載,根據(jù)此Pipfile 運行命令pipenv install --dev生成自己的虛擬環(huán)境狡逢。

Pipfile.lock 文件是通過hash算法將包的名稱和版本宁舰,及依賴關(guān)系生成哈希值,可以保證包的完整性奢浑。

3 安裝python包(module)

用pycharm先打開咱們剛剛創(chuàng)建的project蛮艰,然后創(chuàng)建APP目錄,在app目錄下創(chuàng)建如下spider.py文件雀彼,導(dǎo)入requests庫壤蚜,并沒有安裝這個包瘫拣。

image

安裝requests包验庙,命令如下:

pipenv install requests

詳情參見下圖:

image

這樣,在pycharm里就能看到requests已經(jīng)可用愕宋,并且能抓取到網(wǎng)頁了莺丑。

image

4 查看安裝包及依賴關(guān)系

命令如下:

pipenv graph

詳情參見下圖:

image

4.1 通過--dev指明只安裝在開發(fā)環(huán)境中

pipenv install --dev requests --three

詳情如下圖:

image

反應(yīng)在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參數(shù)萧豆,則只安裝[dev-packages]下的包;若安裝時不定指定--dev參數(shù)昏名,只會安裝[packages] 包下面的模塊涮雷。

在構(gòu)建新的python虛擬環(huán)境時,會自動下載安裝[requires] 下的包轻局。

5 兼容requirements.txt 文件

5.1 pipenv可以像virtualenv一樣用命令生成requirements.txt 文件洪鸭,命令如下:

pipenv lock -r --dev > requirements.txt

詳情如下圖:

image

5.2 pipenv也可以通過requirements.txt安裝包

命令參見:

pipenv install -r requirements.txt
image

這樣我們可以重用之前的requirement.txt 文件來構(gòu)建我們新的開發(fā)環(huán)境膜钓,把我們的項目順利的遷到pipenv。

6 運行python代碼(py文件)

6.1 方法一: pipenv run python xxx.py

pipenv run python xxx.py

詳情如下:

image

6.2 方法二:啟動虛擬環(huán)境的shell環(huán)境

pipenv shell

詳情如下:

image

加上參數(shù)也可:

image

7 刪除python包(module)

刪除包的命令:

pipenv uninstall [module_name]

例如卸載之前安裝的requests包:

image

8 刪除虛擬環(huán)境

pipenv --rm

如下:

image

刪除虛擬環(huán)境之后卿嘲,再次運行pip shell 會發(fā)現(xiàn)先為這個project創(chuàng)建虛擬環(huán)境,然后再打開shell夫壁。如下:

image

9 常用命令一覽

pipenv --where                 列出本地工程路徑
pipenv --venv                  列出虛擬環(huán)境路徑
pipenv --py                    列出虛擬環(huán)境的Python可執(zhí)行文件
pipenv install                 創(chuàng)建虛擬環(huán)境
pipenv isntall [moduel]        安裝包
pipenv install [moduel] --dev  安裝包到開發(fā)環(huán)境
pipenv uninstall[module]       卸載包
pipenv uninstall --all         卸載所有包
pipenv graph                   查看包依賴
pipenv lock                    生成lockfile
pipenv run python [pyfile]     運行py文件
pipenv --rm                    刪除虛擬環(huán)境</pre>

更多內(nèi)容參見:pipenv 的GitHub地址拾枣。

virtualenv是用于創(chuàng)建獨立的python虛擬環(huán)境

virtualenv的優(yōu)點

1.使得不同python應(yīng)用的開發(fā)環(huán)境相互獨立

2.開發(fā)環(huán)境升級不影響其他應(yīng)用的開發(fā)環(huán)境,也不會影響全局的環(huán)境(默認是的開發(fā)環(huán)境是全局開發(fā)環(huán)境),因為虛擬環(huán)境是將全局環(huán)境進行私有的復(fù)制盒让,當我在虛擬環(huán)境進行pip install 時梅肤,只會安裝到選擇的虛擬環(huán)境中。

3.它可以防止系統(tǒng)中出現(xiàn)包管理混亂和版本的沖突

如何安裝virtualenv (第一種方法)

1.前提已經(jīng)安裝好python環(huán)境
2.windows下快鍵鍵 Ctrl + R 打開運行終端 輸入 cmd 進入命令行界面
運行終端
命令行界面
3.直接在命令行輸入(默認是安裝在全局的環(huán)境)

pip install virtualenv

我已經(jīng)安裝過了
4.我們安裝好virtualenv之后邑茄,可直接新建virtualenv環(huán)境(語法以下)姨蝴,virtualenv環(huán)境目錄是在當前目錄下

# virtualenv 虛擬環(huán)境名字 
virtualenv testvir   

虛擬環(huán)境
5.進入虛擬環(huán)境

使用命令進入虛擬環(huán)境的Scripts目錄下,運行activate.bat文件

進入虛擬環(huán)境

可以使用pip list 查看虛擬環(huán)境下安裝的庫


pip list

6.退出虛擬環(huán)境

在虛擬環(huán)境的Scripts目錄下肺缕,運行deactivate.bat文件

退出虛擬環(huán)境

如何安裝virtualenv (第二種方法)

1.直接在命令行輸入(默認是安裝在全局的環(huán)境)

pip install virtualenvwrapper-win

這個庫的好處是新建好虛擬環(huán)境之后直接就進入虛擬環(huán)境中左医,不需要手動進入

2.我們安裝好virtualenv之后,可直接新建virtualenv環(huán)境(語法以下)同木,virtualenv環(huán)境目錄是在當前目錄下

# virtualenv 虛擬環(huán)境名字 
mkvirtualenv testvir2   

3.退出虛擬環(huán)境

在虛擬環(huán)境下浮梢,輸入deactivate(注意這里不是運行文件)

其他重要的命令(是基于virtualenvwrapper-win庫)

1.查看有多少個虛擬環(huán)境

workon

多少個虛擬環(huán)境
2.進入某個虛擬環(huán)境

# workon 虛擬環(huán)境名字 
workon testvir2

進入某個虛擬環(huán)境

更改默認的python虛擬環(huán)境安裝目錄

點擊我的電腦右鍵 > 屬性 > 高級系統(tǒng)設(shè)置 > 環(huán)境變量 > 編輯
添加一個變量名 WORKON_HOME
變量值就是你要更改的python虛擬環(huán)境安裝目錄

更改默認的python虛擬環(huán)境安裝目錄

Linux與windows的區(qū)別

image

Linux是不區(qū)分文件類型的,文件類型是靠權(quán)限來區(qū)分的

image

windows下的程序是不能直接在Linux中安裝和運行

字符界面的優(yōu)勢

image

參考:https://cloud.tencent.com/developer/article/1328471

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末彤路,一起剝皮案震驚了整個濱河市秕硝,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌洲尊,老刑警劉巖远豺,帶你破解...
    沈念sama閱讀 216,470評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異坞嘀,居然都是意外死亡躯护,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,393評論 3 392
  • 文/潘曉璐 我一進店門姆吭,熙熙樓的掌柜王于貴愁眉苦臉地迎上來榛做,“玉大人,你說我怎么就攤上這事内狸〖烀校” “怎么了?”我有些...
    開封第一講書人閱讀 162,577評論 0 353
  • 文/不壞的土叔 我叫張陵昆淡,是天一觀的道長锰瘸。 經(jīng)常有香客問我,道長昂灵,這世上最難降的妖魔是什么避凝? 我笑而不...
    開封第一講書人閱讀 58,176評論 1 292
  • 正文 為了忘掉前任舞萄,我火速辦了婚禮,結(jié)果婚禮上管削,老公的妹妹穿的比我還像新娘倒脓。我一直安慰自己,他們只是感情好含思,可當我...
    茶點故事閱讀 67,189評論 6 388
  • 文/花漫 我一把揭開白布崎弃。 她就那樣靜靜地躺著,像睡著了一般含潘。 火紅的嫁衣襯著肌膚如雪饲做。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,155評論 1 299
  • 那天遏弱,我揣著相機與錄音盆均,去河邊找鬼。 笑死漱逸,一個胖子當著我的面吹牛泪姨,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播虹脯,決...
    沈念sama閱讀 40,041評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼驴娃,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了循集?” 一聲冷哼從身側(cè)響起唇敞,我...
    開封第一講書人閱讀 38,903評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎咒彤,沒想到半個月后疆柔,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,319評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡镶柱,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,539評論 2 332
  • 正文 我和宋清朗相戀三年旷档,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片歇拆。...
    茶點故事閱讀 39,703評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡鞋屈,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出故觅,到底是詐尸還是另有隱情厂庇,我是刑警寧澤,帶...
    沈念sama閱讀 35,417評論 5 343
  • 正文 年R本政府宣布输吏,位于F島的核電站权旷,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏贯溅。R本人自食惡果不足惜拄氯,卻給世界環(huán)境...
    茶點故事閱讀 41,013評論 3 325
  • 文/蒙蒙 一躲查、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧译柏,春花似錦镣煮、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,664評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至黔衡,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間腌乡,已是汗流浹背盟劫。 一陣腳步聲響...
    開封第一講書人閱讀 32,818評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留与纽,地道東北人侣签。 一個月前我還...
    沈念sama閱讀 47,711評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像急迂,于是被迫代替她去往敵國和親影所。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,601評論 2 353

推薦閱讀更多精彩內(nèi)容