成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

為什么Python開發人員應該使用Pipenv

開發 后端
Pipenv 是由 Kenneth Reitz 在一年多前創建的“面向開發者而生的 Python 開發工作流”,它已經成為管理軟件包依賴關系的 Python 官方推薦資源。但是對于它解決了什么問題,以及它如何比使用 pip 和 requirements.txt 文件的標準工作流更有用處,這兩點仍然存在困惑。

[[235818]]

只用了一年, Pipenv 就變成了管理軟件包依賴關系的 Python 官方推薦資源。

Pipenv 是由 Kenneth Reitz 在一年多前創建的“面向開發者而生的 Python 開發工作流”,它已經成為管理軟件包依賴關系的 Python 官方推薦資源。但是對于它解決了什么問題,以及它如何比使用 piprequirements.txt 文件的標準工作流更有用處,這兩點仍然存在困惑。在本月的 Python 專欄中,我們將填補這些空白。

 

Python 包安裝簡史

為了理解 Pipenv 所解決的問題,看一看 Python 包管理如何發展十分有用的。

讓我們回到***個 Python 版本,這時我們有了 Python,但是沒有干凈的方法來安裝軟件包。

然后有了 Easy Install,這是一個可以相對容易地安裝其他 Python 包的軟件包,但它也帶來了一個問題:卸載不需要的包并不容易。

pip 登場,絕大多數 Python 用戶都熟悉它。pip 可以讓我們安裝和卸載包。我們可以指定版本,運行 pip freeze > requirements.txt 來輸出一個已安裝包列表到一個文本文件,還可以用相同的文本文件配合 pip install -r requirements.txt 來安裝一個應用程序需要的所有包。

但是 pip 并沒有包含將軟件包彼此隔離的方法。我們可能會開發使用相同庫的不同版本的應用程序,因此我們需要一種方法來實現這一點。隨之而來的是虛擬環境,它使我們能夠為我們開發的每個應用程序創建一個小型的、隔離的環境。我們已經看到了許多管理虛擬環境的工具:virtualenvvenvvirtualenvwrapperpyenvpyenv-virtualenvpyenv-virtualenvwrapper 等等。它們都可以很好地使用 piprequirements.txt 文件。

 

新方法:Pipenv

Pipenv 旨在解決幾個問題:

首先,需要 pip 庫來安裝包,外加一個用于創建虛擬環境的庫,以及用于管理虛擬環境的庫,再有與這些庫相關的所有命令。這些都需要管理。Pipenv 附帶包管理和虛擬環境支持,因此你可以使用一個工具來安裝、卸載、跟蹤和記錄依賴性,并創建、使用和組織你的虛擬環境。當你使用它啟動一個項目時,如果你還沒有使用虛擬環境的話,Pipenv 將自動為該項目創建一個虛擬環境。

Pipenv 通過放棄 requirements.txt 規范轉而將其移動到一個名為 Pipfile 的新文檔中來完成這種依賴管理。當你使用 Pipenv 安裝一個庫時,項目的 Pipfile 會自動更新安裝細節,包括版本信息,還有可能的 Git 倉庫位置、文件路徑和其他信息。

其次,Pipenv 希望能更容易地管理復雜的相互依賴關系。你的應用程序可能依賴于某個特定版本的庫,而那個庫可能依賴于另一個特定版本的庫,這些依賴關系如海龜般堆疊起來。當你的應用程序使用的兩個庫有沖突的依賴關系時,你的情況會變得很艱難。Pipenv 希望通過在一個名為 Pipfile.lock 的文件中跟蹤應用程序相互依賴關系樹來減輕這種痛苦。Pipfile.lock 還會驗證生產中是否使用了正確版本的依賴關系。

另外,當多個開發人員在開發一個項目時,Pipenv 很方便。通過 pip 工作流,凱西可能會安裝一個庫,并花兩天時間使用該庫實現一個新功能。當凱西提交更改時,他可能會忘記運行 pip freeze 來更新 requirements.txt 文件。第二天,杰米拉取凱西的改變,測試就突然失敗了。這樣會花費好一會兒才能意識到問題是在 requirements.txt 文件中缺少相關庫,而杰米尚未在虛擬環境中安裝這些文件。

因為 Pipenv 會在安裝時自動記錄依賴性,如果杰米和凱西使用了 Pipenv,Pipfile 會自動更新并包含在凱西的提交中。這樣杰米和凱西就可以節省時間并更快地運送他們的產品。

***,將 Pipenv 推薦給在你項目上工作的其他人,因為它使用標準化的方式來安裝項目依賴項和開發和測試的需求。使用 pip 工作流和 requirements.txt 文件意味著你可能只有一個 requirements.txt 文件,或針對不同環境的多個 requirements.txt 文件。例如,你的同事可能不清楚他們是否應該在他們的筆記本電腦上運行項目時是運行 dev.txt 還是 local.txt。當兩個相似的 requirements.txt 文件彼此不同步時它也會造成混淆:local.txt 是否過時了,還是真的應該與 dev.txt 不同?多個 requirements.txt 文件需要更多的上下文和文檔,以使其他人能夠按照預期正確安裝依賴關系。這個工作流程有可能會混淆同時并增加你的維護負擔。

使用 Pipenv,它會生成 Pipfile,通過為你管理對不同環境的依賴關系,可以避免這些問題。該命令將安裝主項目依賴項:

  1. pipenv install

添加 --dev 標志將安裝開發/測試的 requirements.txt

  1. pipenv install --dev

使用 Pipenv 還有其他好處:它具有更好的安全特性,以易于理解的格式繪制你的依賴關系,無縫處理 .env 文件,并且可以在一個文件中自動處理開發與生產環境的不同依賴關系。你可以在文檔中閱讀更多內容。

 

使用 Pipenv

使用 Pipenv 的基礎知識在官方 Python 包管理教程管理應用程序依賴關系部分中詳細介紹。要安裝 Pipenv,使用 pip

  1. pip install pipenv

要安裝在項目中使用的包,請更改為項目的目錄。然后安裝一個包(我們將使用 Django 作為例子),運行:

  1. pipenv install django

你會看到一些輸出,表明 Pipenv 正在為你的項目創建一個 Pipfile

如果你還沒有使用虛擬環境,你還會看到 Pipenv 的一些輸出,說明它正在為你創建一個虛擬環境。

然后,你將看到你在安裝包時常看到的輸出。

為了生成 Pipfile.lock 文件,運行:

  1. pipenv lock

你也可以使用 Pipenv 運行 Python 腳本。運行名為 hello.py 的上層 Python 腳本:

  1. pipenv run python hello.py

你將在控制臺中看到預期結果。

啟動一個 shell,運行:

  1. pipenv shell

如果你想將當前使用 requirements.txt 文件的項目轉換為使用 Pipenv,請安裝 Pipenv 并運行:

  1. pipenv install requirements.txt

這將創建一個 Pipfile 并安裝指定的 requirements.txt。考慮一下升級你的項目!

 

了解更多

查看 Pipenv 文檔,特別是 Pipenv 的基本用法,以幫助你進一步學習。Pipenv 的創建者 Kenneth Reitz 為 Pipenv 在最近的 PyTennessee 發表了一篇演講:“Python 依賴管理的未來”。這次演講沒有被記錄下來,但他的幻燈片有助于理解 Pipenv 所做的以及解決的問題。 

責任編輯:龐桂玉 來源: Linux中國
相關推薦

2022-03-03 23:30:27

TypeScrip開發前端

2022-12-19 07:33:49

開發人員谷歌制度

2011-05-05 17:57:18

軟件開發

2020-07-23 08:21:25

PHP開發人員MVC

2023-12-25 07:58:46

Python開發.NET

2021-01-30 10:51:07

Python編程語言開發

2020-06-22 07:18:21

Java語言開發

2021-04-18 18:12:07

Linux開發操作系統

2021-11-01 22:19:29

開發測試代碼

2020-04-09 09:10:23

Python編程語言開發

2023-09-04 08:20:00

2011-06-20 08:43:15

Windows 8開發人員

2011-07-10 15:18:11

開發

2019-05-27 15:50:43

isSuccess變量名編程語言

2023-01-11 12:14:50

NeoVimVim開發

2009-09-10 14:18:03

PHP庫

2015-07-28 16:38:56

App移動開發

2010-02-24 13:45:40

Python開發人員

2011-12-21 09:19:32

API

2014-09-12 10:28:28

技術開發程序員
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产精品一区二区三区四区 | 亚洲精品一区二区久 | 97日日碰人人模人人澡分享吧 | 免费国产视频在线观看 | 成人免费在线视频 | 免费视频久久 | 热久久久 | 日韩在线视频免费观看 | 精品久久久久久久久久 | 亚洲人人| 久久综合av| ririsao久久精品一区 | 久久久夜夜夜 | 91精品久久久久 | 国产麻豆一区二区三区 | 9999国产精品欧美久久久久久 | av一区二区在线观看 | 亚洲一区二区三区在线视频 | 在线一区二区三区 | 成人亚洲一区 | 91国产精品| 国产成人一区二区三区久久久 | 国产乱码精品一区二区三区中文 | 精品久久一区 | 中文在线播放 | 综合一区二区三区 | 日本综合在线观看 | 久久91| 久久精品亚洲精品国产欧美kt∨ | 国产伦精品一区二区三毛 | 精品乱码一区二区三四区 | 国产精品久久久久久久一区探花 | 亚洲欧美视频一区 | 久久99精品久久久久久国产越南 | 国产精品中文字幕在线 | 久久久久久久97 | 久久亚洲一区二区三区四区 | 中文字幕一区二区三区不卡 | 天天操人人干 | 黑人久久久 | 中文字幕色站 |