日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

不用 pip install,你养我吗?

發布時間:2024/9/15 53 豆豆
生活随笔 收集整理的這篇文章主要介紹了 不用 pip install,你养我吗? 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

我們在開發 Python 項目的時候,我們總會使用到這么幾個玩意:

  • pip

  • requirements.txt

  • vent

當你創建一個 Python 項目的時候,你會先整一個虛擬環境(virtualenv),在這里面使用到的第三方模塊,版本等,都只作用于你這個項目當前的環境,和其他的項目互不干擾。

比如,你可以創建一個 Python3 的虛擬環境:

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

當你項目開發完成,想要給別人使用,或者在生產環境中運行時,你可以使用 pip 將項目中使用到的庫生成一個 「requirements.txt」文件:

pip freeze > requirements.txt

這時候你當前項目下會生成一個 requirements.txt 文件,這里面列出來的就是你這個項目用到的庫以及相關的版本:

那么,當別人要使用你這個項目的時候,只需要使用如下命令就可以安裝你這個項目中所有依賴的庫:

pip install -r requirements.txt

但是,經過一段時間會發現,你需要經常去修改 「requirements.txt」中的內容才能讓開發環境和生產環境相一致,比如說,你在你的項目中引用了兩個第三方庫,而它們又引用了相同的庫,但是版本不同,那么在生產環境中就可能出問題。

假設你項目引用了 「requests」和「click」庫,而它們都引用了一個叫做「帥b」的庫。但是它們使用的版本不一樣,比如 「requests」 用的是 「帥b」1.0 版本:

帥b==1.0

而 「click」 用的是 2.0 版本

帥b==2.0

這時候,生產環境想通過 pip install -r requirements.txt 來安裝依賴庫,但 pip 發現現在「帥b」的最新版本是 3.0,然后直接懵逼了,我特么到底要安裝了 「帥b」1.0 版本還是 2.0 版本還是 3.0 版本?

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

那么現在生產環境是沒有「帥b==2.0」版本的,假設 click 庫只能用「帥b2.0」以下的版本,那么這時候在生產環境就用不了 click 的功能,項目撲街。

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

帥b>=1.0,<=2.0

requests==2.25.1

click==7.1.2

...

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

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

那么接下來就是

學習 Python 的正確姿勢

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

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

pip install pipenv

pipenv 使用虛擬環境

現在,我們創建虛擬環境是這樣的,進入你的項目,使用:

pipenv install

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

pipenv install --two

使用 Python 3.9.1

Piping install --python3.9.1

可以看到,我們把虛擬環境創建好了,接著使用如下命令來激活虛擬環境:

pipenv shell

當然,如果你不想激活虛擬環境,但是想直接使用虛擬環境的話,可以使用如下命令來運行:

pipenv run

看到這里,你可能會覺得,和上面的 venv 創建虛擬環境差不多啊?

打開你的項目文件,你可以看到,在使用 pipenv 創建虛擬環境的時候,多出來了兩個文件:

Pipfile

Pipfile.lock

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

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

也就是說,現在我們通過 pipenv 來操作第三方庫。你是刪除也好,更新也罷,它們都會幫你自動更新,你不用再去操心 requirements.txt 了。

比如,我們現在使用 pipenv 來安裝「requests」和 「click」庫:

pipenv install requests

pipenv install click

這時候 pipenv 會自動將你使用的庫更新到 「Pipfile」和 「Pipfile.lock」文件中。

pipfile:

Pipfile.lock:

pipfile 列出了我們所安裝的庫和 Python 版本等信息,Pipfile.lock 更為詳細,其中還包含了庫的哈希值,這樣我們在生產環境中使用這些庫的時候,可以保證安裝到的庫是一模一樣的。

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

你可以使用 pipenv lock 命令來生成 Pipfile.lock,然后在生產環境中,你只需要 pipenv install,就可以安裝項目所依賴的庫了。

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

pipenv 常用的命令

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

檢查庫的安全性:

pipenv check

Checking PEP 508 requirements...

Passed!

Checking installed package safety...

All good!

你剛看到的庫的安裝:

piping install

查看庫的依賴關系:

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]

卸載庫:

pipenv uninstall click

Uninstalling click...

...

? Success!

Updated Pipfile.lock (fe5a22)!

更新:

pipenv update

查看具體的庫:

pipenv open requests

進入虛擬環境:

pipenv shell

退出虛擬環境:

exit

安裝 Pipfile.lock 中的庫:

pipenv sync?

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

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

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

總結

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

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。