衡阳派盒市场营销有限公司

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

Python開發的Pipenv能解決什么問題

我快閉嘴 ? 作者:工程師李察 ? 2018-10-06 14:27 ? 次閱讀

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

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

Python 包安裝簡史

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

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

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

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

但是pip并沒有包含將軟件包彼此隔離的方法。我們可能會開發使用相同庫的不同版本的應用程序,因此我們需要一種方法來實現這一點。隨之而來的是虛擬環境,它使我們能夠為我們開發的每個應用程序創建一個小型的、隔離的環境。我們已經看到了許多管理虛擬環境的工具:virtualenv、venv、virtualenvwrapper、pyenv、pyenv-virtualenv、pyenv-virtualenvwrapper等等。它們都可以很好地使用pip和requirements.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,通過為你管理對不同環境的依賴關系,可以避免這些問題。該命令將安裝主項目依賴項:

pipenv install

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

pipenv install --dev

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

使用 Pipenv

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

pip install pipenv

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

pipenv install django

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

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

然后,你將看到你在安裝包時??吹降妮敵?。

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

pipenv lock

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

pipenv run python hello.py

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

啟動一個 shell,運行:

pipenv shell

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

pipenv install requirements.txt

這將創建一個 Pipfile 并安裝指定的 requirements.txt??紤]一下升級你的項目!

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • python
    +關注

    關注

    56

    文章

    4807

    瀏覽量

    85037
收藏 人收藏

    評論

    相關推薦

    示波器的FFT能解什么問題?

    本文將教你用五種方法把示波器上的FFT做成極致! 一、示波器上的FFT是什么? 二、示波器的FFT能解什么問題? 三、示波器的FFT 經常變成用戶手里的雞肋,問題在哪? 四、我們把示波器上的頻譜
    的頭像 發表于 08-23 09:31 ?1.8w次閱讀

    python開發工具推薦

    Python開發軟件可根據其用途不同分為兩種,一種是Python代碼編輯器,一種是Python集成開發工具,兩者的配合使用可以極大的提高
    發表于 04-12 16:12

    Pipenv使用技巧

    ”微服務一條龍“最佳指南-工具篇:初步使用Pipenv
    發表于 09-17 07:11

    FPGA能解什么問題看了就知道

    了解FPGA?首先,如果你從未接觸過FPGA(現場可編程門陣列),或者有過一點基礎想要繼續深入了解這個行業,在這個小節,我會向你介紹FPGA,并且向你解釋FPGA都能解什么問題,如何解決這些問題,并討論如何將設計進行優化等等。
    發表于 10-21 13:32

    eplan_路徑功能文本能解什么問題

    eplan_路徑功能文本是什么?eplan_路徑功能文本能解什么問題?eplan_路徑功能文本可能存在哪些問題?
    發表于 09-06 07:24

    Python項目開發實戰1-50

    Python項目開發實戰
    發表于 03-27 09:02 ?55次下載

    python適合做什么開發_python未來發展怎么樣

    本文開始介紹了pythonPython優缺點,其次闡述了python可以用來做什么開發,最后分析了Python語言在未來的發展前景。
    發表于 04-26 16:32 ?8317次閱讀

    一份2018年Python開源項目Top100清單!

    。這是 Python 官方推薦的一個 Python 包管理工具,可以幫你把 Pipfile, pip, 和 virtualenv 整合到一起, 而且你也可以在瀏覽器中快速使用 Pipenv。
    的頭像 發表于 01-02 09:56 ?3022次閱讀
    一份2018年<b class='flag-5'>Python</b>開源項目Top100清單!

    Python工程師面試時需要準備什么

    隨著互聯網的發展,python語言現在變得越來越火爆,Python程序員越來越受到大家的青睞!那么想進入Python行業,面試時需要注意些什么問題呢?我們在參加
    的頭像 發表于 03-01 14:25 ?2284次閱讀

    數據中臺是什么,它能幫我們解決什么問題

    近幾年來數據中臺概念大火,市面上掀起了一波建業務中臺、數據中臺熱潮,那么數據中臺到底是什么?它的出現能解什么問題呢?
    的頭像 發表于 04-13 15:11 ?3411次閱讀

    python開發環境搭建步驟

    在正式學習Python編程之前,要先安裝Python,這包括“標準Python”、“第三方Python包”、“Python程序
    的頭像 發表于 05-05 22:23 ?3168次閱讀
    <b class='flag-5'>python</b><b class='flag-5'>開發</b>環境搭建步驟

    Python語言介紹及開發環境

    Python語言介紹及開發環境說明。
    發表于 04-26 09:51 ?11次下載

    Python虛擬環境pipenv的使用

    一般我們創建 Python 項目的時候都會創建一個虛擬環境,這樣做的好處就是會把項目環境和操作系統環境區分開來,避免把操作系統環境弄亂。 還有一個痛點就是我們在開發環境開發完成之后,需要把代碼復制到
    的頭像 發表于 08-23 10:15 ?1776次閱讀

    Python項目開發實戰

    Python項目開發實戰
    發表于 06-13 14:51 ?2次下載

    pcb仿真能解什么問題

    pcb仿真能解什么問題?? PCB(Printed Circuit Board,印刷電路板)是一種在電氣和電子設備中應用廣泛的基礎元件。隨著技術的不斷發展,PCB設計也進入了數字化和智能化的時代
    的頭像 發表于 08-29 16:40 ?1544次閱讀
    百家乐不锈钢| 太阳城娱乐城网址| e世博娱乐| 百家乐官网好多假网站| 百家乐官网网上赌有作假吗| 聚宝盆百家乐游戏| 百家乐技巧-澳门百家乐官方网址| 大发888官网e世博备用网址| 大亨百家乐官网游戏| 百家乐官网如何骗人| 百家乐棋牌官网| 龙都棋牌下载| 百家乐官网之三姐妹赌博机| 网上百家乐赌场| 大发888官方 截图| 美国百家乐官网怎么玩| 真人百家乐官网怎么玩| 百家乐群shozo| 噢门百家乐官网注码技巧| 百家乐赢钱lv| 大发888客户端官方下载| 百家乐官网娱乐皇冠世界杯| 百家乐事电影| 亚洲博彩网| 华硕百家乐官网的玩法技巧和规则 | 新天地百家乐官网的玩法技巧和规则 | 百家乐官网分析博彩正网| 百家乐如何视频| 澳门顶级赌场317 | 澳门百家乐娱乐城打不开| 天博国际娱乐城| 15人百家乐官网桌| 大发888娱乐城手机版| 百家乐官网顶路| 圣保罗百家乐的玩法技巧和规则| 百家乐官网下注的规律| 职业赌百家乐技巧| 百家乐官网代理龙虎| 百家乐官网怎样概率大| 百家乐如何洗吗| 真人百家乐官网免费开户送钱|