pipfile和pipfile.lock、virtualenv、pipenv、pip
我們先說說virtualenv怎么用
第一步,創(chuàng)建目錄(并且移到當(dāng)前項(xiàng)目目錄下):
命令virtualenv就可以創(chuàng)建一個(gè)獨(dú)立的Python運(yùn)行環(huán)境。
參數(shù)--no-site-packages,使已經(jīng)安裝到系統(tǒng)Python環(huán)境中的所有第三方包都不會(huì)復(fù)制過來,這樣,我們就得到了一個(gè)不帶任何第三方包的“干凈”的Python運(yùn)行環(huán)境。
注意到命令提示符變了,有個(gè)(venv)前綴,表示當(dāng)前環(huán)境是一個(gè)名為venv的Python環(huán)境。
在venv環(huán)境下,用pip安裝的包都被安裝到venv這個(gè)環(huán)境下,系統(tǒng)Python環(huán)境不受任何影響。也就是說,venv環(huán)境是專門針對(duì)myproject這個(gè)應(yīng)用創(chuàng)建的。
退出當(dāng)前的venv環(huán)境,使用deactivate命令:
完全可以針對(duì)每個(gè)應(yīng)用創(chuàng)建獨(dú)立的Python運(yùn)行環(huán)境,這樣就可以對(duì)每個(gè)應(yīng)用的Python環(huán)境進(jìn)行隔離。
virtualenv是如何創(chuàng)建“獨(dú)立”的Python運(yùn)行環(huán)境的呢?原理很簡(jiǎn)單,就是把系統(tǒng)Python復(fù)制一份到virtualenv的環(huán)境,用命令source venv/bin/activate進(jìn)入一個(gè)virtualenv環(huán)境時(shí),virtualenv會(huì)修改相關(guān)環(huán)境變量,讓命令python和pip均指向當(dāng)前的virtualenv環(huán)境。
這里說pipenv
在Python打包的上下??文中,似乎Pipfile / Pipfile.lock旨在替換requirements.txt。
Pipenv是一個(gè)包和虛擬環(huán)境管理工具,它使用Pipfile和Pipfile.lock文件來實(shí)現(xiàn)這些目標(biāo)。具體來說他是pip、pipfile、virtualenv的結(jié)合體。讓包安裝、包依賴管理、和虛擬環(huán)境管理更加方便,
Pipenv以一種默認(rèn)的標(biāo)準(zhǔn)方式為您處理虛擬環(huán)境(不再需要激活和停用)。下面是一些幫助您入門的基礎(chǔ)知識(shí),請(qǐng)?jiān)L問pipenv網(wǎng)站了解更多信息。
入門
使用pip安裝pipenv(會(huì)自動(dòng)安裝在我們的python的bin目錄下)
$ pip install pipenv用下面的命令檢查pipenv是否已經(jīng)安裝:
$ pipenv --version虛擬環(huán)境通常需要用Virtualenv來創(chuàng)建,因?yàn)閜ipenv集成了virtualenv,我們就使用pipenv更方便的管理虛擬環(huán)境和環(huán)境依賴包
在自己想創(chuàng)建的位置創(chuàng)建一個(gè)helloflask項(xiàng)目目錄(示例文件夾)
如果想指定創(chuàng)建的虛擬環(huán)境的Python版本,可以使用下面的命令。
默認(rèn)情況下,pipenv會(huì)統(tǒng)一管理所有虛擬環(huán)境,在Linux或macOS系統(tǒng)中,由上圖運(yùn)行可得,會(huì)在 ~/.local/share/virtualenvs/目錄下創(chuàng)建,在windows中,虛擬環(huán)境文件夾會(huì)在C:\Users\Administrator\.virtualenvs\目錄下創(chuàng)建。虛擬環(huán)境目錄名稱的形式為“當(dāng)前項(xiàng)目目錄名+一串隨機(jī)字符”,比如helloflask-1RVeSQmm
如果你想在項(xiàng)目目錄內(nèi)創(chuàng)建虛擬環(huán)境文件夾,可以設(shè)置環(huán)境變量PIPENV_VENV_IN_PROJECT,這時(shí)名為.venv的虛擬環(huán)境目錄將在項(xiàng)目根目錄被創(chuàng)建。
Profile內(nèi)容解析
打開Profile文件,可以看到如下內(nèi)容。
[[source]] name = "pypi" url = "https://pypi.org/simple" verify_ssl = true[dev-packages][packages][requires] python_version = "3.7"source用來設(shè)置倉(cāng)庫(kù)地址,即從哪下載虛擬環(huán)境所需要的包
packages用來指定項(xiàng)目依賴的包,即你安裝了的包
dev-packages用來指定開發(fā)環(huán)境需要的包,這類包只用于開發(fā)過程,不用與生產(chǎn)環(huán)境,比如單元測(cè)試相關(guān)的包,只在開發(fā)階段有用,這樣分開便于管理。
requires 中指定目標(biāo)Python版本
Pipfile.lock文件
該P(yáng)ipfile.lock是用來規(guī)定的基礎(chǔ)上,目前在包裝Pipfile,應(yīng)該使用那些特定版本,避免依賴于對(duì)方破壞你的項(xiàng)目的依賴關(guān)系樹自動(dòng)升級(jí)包的風(fēng)險(xiǎn)。該文件用來保證包的完整性。記住,任何情況下不要手動(dòng)修改該文件!
您可以使用$ pipenv lock鎖定當(dāng)前安裝的軟件包
項(xiàng)目提交時(shí),可將Pipfile 文件和Pipfile.lock文件一并提交,給其他開發(fā)人員克隆下載,他們可以根據(jù)此Pipfile文件運(yùn)行命令pipenv install生成自己的虛擬環(huán)境。
一個(gè)好消息是,PyCharm2018.2開始支持pipenv了。我們也可以在創(chuàng)建項(xiàng)目時(shí)使用Pipenv,如圖
4. 在單獨(dú)使用Virtualenv時(shí),我們通常顯式地激活虛擬環(huán)境,在pipenv中,可以使用pipenv shell命令顯式地激活虛擬環(huán)境
5. pipenv會(huì)啟動(dòng)一個(gè)激活虛擬環(huán)境的子shell,現(xiàn)在你會(huì)發(fā)現(xiàn)命令行提示符前添加了虛擬環(huán)境名“(虛擬環(huán)境名稱)$”(我這里只顯示了個(gè)項(xiàng)目名稱)
6. 這說明我們已經(jīng)成功激活了虛擬環(huán)境,現(xiàn)在你的所有命令都會(huì)在虛擬環(huán)境中執(zhí)行,當(dāng)你需要退出虛擬環(huán)境時(shí),使用exit命令
退出虛擬環(huán)境后,所有命令都是在本地的python解釋器上執(zhí)行了
7.除了顯式地激活虛擬環(huán)境,pipenv還提供了pipenv run命令,這個(gè)命令允許你不顯式地激活虛擬環(huán)境,即可在當(dāng)前項(xiàng)目的虛擬環(huán)境中執(zhí)行命令,比如:
這里使用的是虛擬環(huán)境中的python解釋器,而不是全局的python解釋器。
總結(jié):
pipenv install 創(chuàng)建虛擬環(huán)境
pipenv shell 進(jìn)入虛擬環(huán)境(如果不存在,則創(chuàng)建并進(jìn)入虛擬環(huán)境)
pipenv install flask 安裝模塊
pipenv uninstall flask 卸載模塊
pipenv graph 查看模塊之間的依賴關(guān)系
pip list 查看虛擬環(huán)境所有模塊
exit 退出虛擬環(huán)境
總結(jié)
以上是生活随笔為你收集整理的pipfile和pipfile.lock、virtualenv、pipenv、pip的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 俞敏洪、王金战、刘嘉、丁延庆:AI时代,
- 下一篇: java中main方法前的public