日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

不用 pip install,你养我吗?

發(fā)布時(shí)間:2024/9/15 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 不用 pip install,你养我吗? 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

我們?cè)陂_發(fā) Python 項(xiàng)目的時(shí)候,我們總會(huì)使用到這么幾個(gè)玩意:

  • pip

  • requirements.txt

  • vent

當(dāng)你創(chuàng)建一個(gè) Python 項(xiàng)目的時(shí)候,你會(huì)先整一個(gè)虛擬環(huán)境(virtualenv),在這里面使用到的第三方模塊,版本等,都只作用于你這個(gè)項(xiàng)目當(dāng)前的環(huán)境,和其他的項(xiàng)目互不干擾。

比如,你可以創(chuàng)建一個(gè) Python3 的虛擬環(huán)境:

現(xiàn)在,你的 Python 項(xiàng)目「my_project」就擁有了自己的 Python3 環(huán)境,你可以在這里面為所欲為,這樣好處是,在這里面所有的操作都不會(huì)和外界產(chǎn)生不必要的麻煩,比如你在這里使用 pip 安裝的模塊,就是只作用于這個(gè)環(huán)境中的,不會(huì)和你的系統(tǒng)搞得亂七八糟:

當(dāng)你項(xiàng)目開發(fā)完成,想要給別人使用,或者在生產(chǎn)環(huán)境中運(yùn)行時(shí),你可以使用 pip 將項(xiàng)目中使用到的庫(kù)生成一個(gè) 「requirements.txt」文件:

pip freeze > requirements.txt

這時(shí)候你當(dāng)前項(xiàng)目下會(huì)生成一個(gè) requirements.txt 文件,這里面列出來的就是你這個(gè)項(xiàng)目用到的庫(kù)以及相關(guān)的版本:

那么,當(dāng)別人要使用你這個(gè)項(xiàng)目的時(shí)候,只需要使用如下命令就可以安裝你這個(gè)項(xiàng)目中所有依賴的庫(kù):

pip install -r requirements.txt

但是,經(jīng)過一段時(shí)間會(huì)發(fā)現(xiàn),你需要經(jīng)常去修改 「requirements.txt」中的內(nèi)容才能讓開發(fā)環(huán)境和生產(chǎn)環(huán)境相一致,比如說,你在你的項(xiàng)目中引用了兩個(gè)第三方庫(kù),而它們又引用了相同的庫(kù),但是版本不同,那么在生產(chǎn)環(huán)境中就可能出問題。

假設(shè)你項(xiàng)目引用了 「requests」和「click」庫(kù),而它們都引用了一個(gè)叫做「帥b」的庫(kù)。但是它們使用的版本不一樣,比如 「requests」 用的是 「帥b」1.0 版本:

帥b==1.0

而 「click」 用的是 2.0 版本

帥b==2.0

這時(shí)候,生產(chǎn)環(huán)境想通過 pip install -r requirements.txt 來安裝依賴庫(kù),但 pip 發(fā)現(xiàn)現(xiàn)在「帥b」的最新版本是 3.0,然后直接懵逼了,我特么到底要安裝了 「帥b」1.0 版本還是 2.0 版本還是 3.0 版本?

pip 這時(shí)候只能把先看到的那個(gè)安裝一波,先把 「帥b==1.0」給安裝了,然后再安裝一個(gè)最新的版本「帥b==3.0」。

那么現(xiàn)在生產(chǎn)環(huán)境是沒有「帥b==2.0」版本的,假設(shè) click 庫(kù)只能用「帥b2.0」以下的版本,那么這時(shí)候在生產(chǎn)環(huán)境就用不了 click 的功能,項(xiàng)目撲街。

于是,你需要去修改「requirements.txt」,比如改成這樣規(guī)定它不要亂來:

帥b>=1.0,<=2.0

requests==2.25.1

click==7.1.2

...

那如果有很多這樣的情況,豈不是得叫爸爸了啊?

有沒有更好的使用方式,讓 Python 項(xiàng)目的包管理更爽呢?

那么接下來就是

學(xué)習(xí) Python 的正確姿勢(shì)

接下來小帥b要給你分享的是:pipenv。這名字看起來是 pip + virtualenv,不過 pipenv 比他們更好用,它可以讓你的包管理更加的順滑酸爽。

接下來小帥b帶你體驗(yàn)一波,首先你得先安裝好 pipenv:

pip install pipenv

pipenv 使用虛擬環(huán)境

現(xiàn)在,我們創(chuàng)建虛擬環(huán)境是這樣的,進(jìn)入你的項(xiàng)目,使用:

pipenv install

你還可以在 install 指定虛擬環(huán)境使用的 Python 版本,比如使用 Python 2:

pipenv install --two

使用 Python 3.9.1

Piping install --python3.9.1

可以看到,我們把虛擬環(huán)境創(chuàng)建好了,接著使用如下命令來激活虛擬環(huán)境:

pipenv shell

當(dāng)然,如果你不想激活虛擬環(huán)境,但是想直接使用虛擬環(huán)境的話,可以使用如下命令來運(yùn)行:

pipenv run

看到這里,你可能會(huì)覺得,和上面的 venv 創(chuàng)建虛擬環(huán)境差不多啊?

打開你的項(xiàng)目文件,你可以看到,在使用 pipenv 創(chuàng)建虛擬環(huán)境的時(shí)候,多出來了兩個(gè)文件:

Pipfile

Pipfile.lock

它們是干啥的呢?其實(shí)它們就是為了解決我們剛剛說的那些包依賴的問題。

之前,我們總是需要在 requirements.txt 文件中改來改去。而現(xiàn)在有了它們,我們可以讓包管理變得很舒服。

也就是說,現(xiàn)在我們通過 pipenv 來操作第三方庫(kù)。你是刪除也好,更新也罷,它們都會(huì)幫你自動(dòng)更新,你不用再去操心 requirements.txt 了。

比如,我們現(xiàn)在使用 pipenv 來安裝「requests」和 「click」庫(kù):

pipenv install requests

pipenv install click

這時(shí)候 pipenv 會(huì)自動(dòng)將你使用的庫(kù)更新到 「Pipfile」和 「Pipfile.lock」文件中。

pipfile:

Pipfile.lock:

pipfile 列出了我們所安裝的庫(kù)和 Python 版本等信息,Pipfile.lock 更為詳細(xì),其中還包含了庫(kù)的哈希值,這樣我們?cè)谏a(chǎn)環(huán)境中使用這些庫(kù)的時(shí)候,可以保證安裝到的庫(kù)是一模一樣的。

值得注意的是,這兩文件不用我們手動(dòng)操作,它們會(huì)自動(dòng)隨著你的 pipenv 操作而更新。

你可以使用 pipenv lock 命令來生成 Pipfile.lock,然后在生產(chǎn)環(huán)境中,你只需要 pipenv install,就可以安裝項(xiàng)目所依賴的庫(kù)了。

現(xiàn)在你可以直接使用 pipenv 來代替這些玩意了:pip、requirements.txt、virtualenv。

pipenv 常用的命令

pipenv 有一些很好用的包管理命令,接下來給你介紹幾個(gè)常用到的命令:

檢查庫(kù)的安全性:

pipenv check

Checking PEP 508 requirements...

Passed!

Checking installed package safety...

All good!

你剛看到的庫(kù)的安裝:

piping install

查看庫(kù)的依賴關(guān)系:

pipenv graph

click==7.1.2

requests==2.25.1

- certifi [required: >=2017.4.17, installed: 2020.12.5]

- chardet [required: >=3.0.2,<5, installed: 4.0.0]

- idna [required: >=2.5,<3, installed: 2.10]

- urllib3 [required: >=1.21.1,<1.27, installed: 1.26.4]

卸載庫(kù):

pipenv uninstall click

Uninstalling click...

...

? Success!

Updated Pipfile.lock (fe5a22)!

更新:

pipenv update

查看具體的庫(kù):

pipenv open requests

進(jìn)入虛擬環(huán)境:

pipenv shell

退出虛擬環(huán)境:

exit

安裝 Pipfile.lock 中的庫(kù):

pipenv sync?

事實(shí)上,你可以直接輸入 pipenv,可以看到命令和參數(shù)的使用解釋:

OK,以上就是小帥b今天給你帶來的分享,希望對(duì)你有幫助。

推薦閱讀 誤執(zhí)行了rm -fr /*之后,除了跑路還能怎么辦?!程序員必備58個(gè)網(wǎng)站匯總大幅提高生產(chǎn)力:你需要了解的十大Jupyter Lab插件

總結(jié)

以上是生活随笔為你收集整理的不用 pip install,你养我吗?的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。