pipenv 是Kenneth Reitz大神的作品,能夠有效管理Python多個環(huán)境,各種包。過去我們一般用virtualenv搭建虛擬環(huán)境,管理python版本,但是跨平臺的使用不太一致,且有時候處理包之間的依賴總存在問題;過去也常常用 pip進行包的管理,pip已經(jīng)足夠好,但是仍然推薦pipenv,相當(dāng)于virtualenv和pip的合體,且更加強大。
pipenv主要有以下特性:
(1)pipenv集成了pip,virtualenv兩者的功能,且完善了兩者的一些缺陷。
(2)過去用virtualenv管理requirements.txt文件可能會有問題,Pipenv使用Pipfile和Pipfile.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
如下:
2 創(chuàng)建虛擬環(huán)境
mkdir project
cd project
pipenv install
如下:
初始化好虛擬環(huán)境后,會在項目目錄下生成2個文件Pipfile和Pipfile.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庫,并沒有安裝這個包。
安裝requests包,命令如下:
pipenv install requests
詳情參見下圖:
這樣,在pycharm里就能看到requests已經(jīng)可用,并且能抓取到網(wǎng)頁了。
4 查看安裝包及依賴關(guān)系
命令如下:
pipenv graph
詳情參見下圖:
4.1 通過--dev指明只安裝在開發(fā)環(huán)境中
pipenv install --dev requests --three
詳情如下圖:
反應(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
詳情如下圖:
5.2 pipenv也可以通過requirements.txt安裝包
命令參見:
pipenv install -r requirements.txt
這樣我們可以重用之前的requirement.txt 文件來構(gòu)建我們新的開發(fā)環(huán)境,把我們的項目順利的遷到pipenv。
6 運行python代碼(py文件)
6.1 方法一: pipenv run python xxx.py
pipenv run python xxx.py
詳情如下:
6.2 方法二:啟動虛擬環(huán)境的shell環(huán)境
pipenv shell
詳情如下:
加上參數(shù)也可:
7 刪除python包(module)
刪除包的命令:
pipenv uninstall [module_name]
例如卸載之前安裝的requests包:
8 刪除虛擬環(huán)境
pipenv --rm
如下:
刪除虛擬環(huán)境之后,再次運行pip shell 會發(fā)現(xiàn)先為這個project創(chuàng)建虛擬環(huán)境,然后再打開shell。如下:
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ù)制,當(dāng)我在虛擬環(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

4.我們安裝好virtualenv之后,可直接新建virtualenv環(huán)境(語法以下),virtualenv環(huán)境目錄是在當(dāng)前目錄下
# virtualenv 虛擬環(huán)境名字
virtualenv testvir

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

可以使用pip list 查看虛擬環(huán)境下安裝的庫
pip list
6.退出虛擬環(huán)境
在虛擬環(huán)境的Scripts目錄下,運行deactivate.bat文件

如何安裝virtualenv (第二種方法)
1.直接在命令行輸入(默認是安裝在全局的環(huán)境)
pip install virtualenvwrapper-win
這個庫的好處是新建好虛擬環(huán)境之后直接就進入虛擬環(huán)境中,不需要手動進入
2.我們安裝好virtualenv之后,可直接新建virtualenv環(huán)境(語法以下),virtualenv環(huán)境目錄是在當(dāng)前目錄下
# virtualenv 虛擬環(huán)境名字
mkvirtualenv testvir2
3.退出虛擬環(huán)境
在虛擬環(huán)境下,輸入deactivate(注意這里不是運行文件)
其他重要的命令(是基于virtualenvwrapper-win庫)
1.查看有多少個虛擬環(huán)境
workon

2.進入某個虛擬環(huán)境
# workon 虛擬環(huán)境名字
workon testvir2

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

Linux與windows的區(qū)別

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

windows下的程序是不能直接在Linux中安裝和運行
字符界面的優(yōu)勢
