欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

什么是pip?Python新手入門指南

系統 1840 0

什么是 pip ?pip 是 Python 中的標準庫管理器。它允許你安裝和管理不屬于 Python標準庫 的其它軟件包。本教程就是為 Python 新手介紹 pip。

通過本教程,你將學到:

1. 安裝 Python 的標準發行版中未包含的其他軟件包

2. 查找發布于 Python 包索引(PyPI)的包

3. 管理腳本和應用程序的安裝需求

4. 卸載包及它的相關依賴

如你所見,Python 社區非常活躍,并且為 pip 創建了一些簡潔的替代方案,你可以在本教程稍后的部分看到。

pip 入門

那么,什么是 pip 呢?pip 是 Python 的包管理器。這意味著它是一個工具,允許你安裝和管理不屬于標準庫的其他庫和依賴。

軟件包管理極其重要,所以自 Python3 的 3.4 版本以及 Python2 的 2.7.9 版本開始,pip 一直被直接包括在 Python 的安裝包內,同樣還被用于 Python 的其它項目中,這使得 pip 成為了每一個 Pythonista(Python用戶)必備的工具。

如果你已經了解了其他語言,那么可能會對包管理器的概念比較熟悉。JavaScript 使用 npm 管理軟件包,Ruby 使用 gem,以及 .NET 使用 NuGet。Python 中,則是 pip 作為標準包管理器。

Python 的安裝器中自帶了 pip,所以你可以直接使用它,除非你安裝的是更早版本的 Python。你可以通過在控制臺中運行以下命令來驗證 pip 是否可用:

什么是pip?Python新手入門指南

你應該可以看到一個類似的輸出,顯示 pip 的版本以及安裝位置還有 Python 的版本。如果你使用的是不包含 pip 的舊版本 Python,你可以根據 pip 安裝文檔中相應系統的說明進行安裝。

你可能希望在虛擬環境中使用本教程的示例,以避免將包安裝到 Python 的全局安裝環境中。你可以從 Python 虛擬環境:入門級了解虛擬環境相關的信息,這篇文章的”使用虛擬環境“一節介紹了創建虛擬環境的基礎知識。

使用 pip 安裝軟件包

Python 被認為是一種"內置電池"式的語言。這表示 Python 標準庫包含大量的軟件包和模塊,這些模塊有助于開發人員開發腳本和應用。

與此同時,Python 擁有一個活躍的社區,它提供了一個更大的軟件包集合,以供你開發所需。這些軟件包發布在 Python Package Index,也被稱為 PyPI(發音 Pie Pea Eye)。PyPI 托管了大量包,包括開發框架,工具和庫。

其中很多軟件包通過為已有功能提供了友好地接口來簡化 Python 開發。例如,你可以寫一個腳本,僅使用 Python 標準庫中的功能分析網頁的內容:

什么是pip?Python新手入門指南

腳本中,導入了 cgi 和 http.client,這兩個都是在 Python 的標準庫中。你創建了一個 HTTPSConnection 對象并指定服務器,然后調用 .request() 和 .getresponse() 解析響應信息。

從響應信息中,我們解析到 Content-Type 頭信息并且使用 cgi 模塊提取頁面編碼的字符集。

cgi.parse_header() 返回一個包括主要值和字典作為參數的元組。例如,Content-Type 頭信息可能包含一個像 text/html; charset=ISO-8859-1 的值。

這個元組將字符串 text/html 作為第一個元素,第二個元素是 {'charset': 'ISO-8859-1'} 這樣形式的字典。因為你只需要關心 charset 參數,可以使用下劃線忽略元組的開頭:_, params = cgi.parse_header(content_type)。

注意:Python 中下劃線的含義解釋了如何從元組解包值。

對頁面編碼后,你可以閱讀相應信息并解碼到文本中。你可以在控制臺中運行這個例子查看它是怎么工作的:

什么是pip?Python新手入門指南

對于一個用于解析網頁內容的小腳本來說,這看起來做的工作有點多。幸運的是,有一個 Python 的包可以簡化 HTTP 請求并提供了一個友好地接口來實現你的期望。

基礎包安裝

PyPI 托管了一個非常流行的庫 requests 來完成 HTTP 請求。你可以通過它的官方文檔站點了解所有的相關信息。

第一步是在你的環境中安裝 requests 包。你可以運行 pip help 來了解 pip 支持的命令:

什么是pip?Python新手入門指南
什么是pip?Python新手入門指南

如你所見,pip 提供了 install 命令來安裝軟件包。你可以運行它來安裝 requests 包:

什么是pip?Python新手入門指南

你可以看到與上面類似的輸出信息。你可以使用 pip 以及 install 命令,其后跟著你想要安裝的包名。pip 會在 PyPI 中查找這個包,計算其依賴關系,安裝并確保 requests 正常工作。

你還可以看到當前環境下 pip 的版本是 18.1,但是還有 19.0.1 版本可用。它還顯示了用于升級 pip 的命令,所以我們來試一下:

什么是pip?Python新手入門指南

注意這里,你使用了 python -m 來升級 pip。-m 開關告訴 Python 將模塊作為可執行文件運行。如果你要升級 pip,這么做是很有必要的,在安裝新的版本之前會卸載舊的版本,而當工具在運行時卸載它自己會導致錯誤。

當你將 pip 作為一個模塊運行時,Python 會將模塊加載到內存中,并允許在這個模塊包運行的時候刪除它。如果軟件包提供了頂層腳本 main .py,那么你可以像運行腳本一下運行這個軟件包。

你已經安裝了 requests 并升級了 pip,現在可以使用 list 命令查看你的環境中安裝了哪些軟件包。

什么是pip?Python新手入門指南

如上所示,pip 已經升級到了 19.0.1 版本(目前最新版本),并且安裝了 requests 2.21.0 版本。

命令 pip install 會查找并安裝軟件包的最新版本。同時還會搜索軟件包元數據中的依賴列表,并安裝這些依賴以確保軟件包滿足所有的需求。

這里你可以看到安裝了很多軟件。你可以使用 pip 中的 show 命令查看包的元數據信息:

[圖片上傳失敗...(image-90ab4f-1565242498214)]

元數據中列出了依賴項 certifi,chardet,idna 和 urllib3,而且你可以看到這些都已經安裝好了。

既然已經安裝了 requests 包,我們可以修改上面的例子,來看看如何更方便地解析網頁的內容:

什么是pip?Python新手入門指南

因為你已經在開發環境中安裝了 requests 包,可以像導入其他標準庫一樣導入它。

可以看到,requests.get() 處理了 HTTP 連接并返回一個與之前例子相似的響應,但是簡潔方便了很多。

因為 requests 已經幫你處理了大部分情況,所以你不需要考慮頁面的編碼問題。而且,requests 還通過 requests.Response 對象提供了一個更加靈活的接口來處理特殊情況。

使用 requirements.txt 需求文件

pip install 命令只會安裝最新發布的軟件包版本,但是有時候,你可能希望根據代碼運行情況安裝特定的版本。

你還希望在開發和測試時指定創建的依賴和版本,這樣就可以在生產環境避免應用程序出現意外情況。

需求文件可以精確指定需要安裝的軟件包和版本。運行 pip help 你可以看到一個 freeze 命令,它會按照格式化輸出以已經安裝的軟件包。你可以使用這個命令,將輸出重定向到文件以生成一個需求文件:

什么是pip?Python新手入門指南

freeze 命令將所有軟件包以及版本信息轉儲到標準輸出,所以你可以重定向這些輸出到文件中。這樣就可以在其他系統中根據這個需求文件執行精準安裝。約定這個需求文件名為 requirements.txt,但是你也可以根據個人喜好命名。

如果你希望在其他系統中復制你的開發環境,你可以運行 pip install 命令并用 -r 開關指定需求文件:

什么是pip?Python新手入門指南

軟件包的版本會根據 requirements.txt 所列出的進行匹配:

什么是pip?Python新手入門指南

你可以將 requirements.txt 文件提交到資源控制器,這樣就可以使用它在其它機器上創建精準匹配的環境了。

微調需求文件

軟件包及其依賴的版本可能會導致硬編碼問題,這是因為軟件包會針對 bug 以及安全修復進行頻繁的更新,而你可能希望在它們發布后立即做出更改。

需求文件的格式允許你使用邏輯運算符指定依賴的版本,這為確保更新包提供了更多的靈活性,但是仍然要定義一個包的基礎版本。

使用你常用的編輯器并作以下修改:

什么是pip?Python新手入門指南

你可以通過改變邏輯運算符為 >= 來告知 pip 精準安裝已發布的指定版本或更高版本。當你使用 requirments.txt 設置了一個新的環境,pip 會查找滿足需求的最新版本并安裝。你可以使用帶有 --upgrade 開關的 install 命令來升級你需求文件中定義的軟件包:

什么是pip?Python新手入門指南

這里沒有任何升級操作,因為你的軟件都是最新版本,但是如果在包列表中發布了新的版本,那么這個包就會被升級到最新版本。

理想情況下,新版本的包會向后兼容并且沒有新引入的 bug。不幸的是,新版本引入的更改還是可能會破壞你的應用程序。需求文件的語法支持額外的版本說明符來微調你的需求。

比方說 requests 發布了新版本 3.0,但是有一些更改與你的應用程序不兼容。你可以通過修改需求文件來禁止安裝 3.0 版本以及更高的版本:

什么是pip?Python新手入門指南

更改 requests 的版本操作符可以確保不會安裝 3.0 或更高的版本。pip 的文檔提供了全部的需求文件格式,你可以查閱以了解更多相關信息。

生產與開發環境的依賴關系

你在開發期間安裝的依賴并不都是你的應用程序的依賴。其中有很多發布到 PyPI 上的包,是你開發過程中想用到的工具或庫。

比方說,你可能希望對你的應用做單元測試,你需要單元測試的框架。一個流行的單元測試框架是 pytest。你希望在你的開發環境中安裝它,但是卻不希望在生產環境也安裝它,因為它不是應用的依賴。

這時你會創建第二個需求文件(requirements_dev.txt)來列出配置開發環境需要的工具:

什么是pip?Python新手入門指南

這里需要你使用 pip 安裝兩個需求文件:requirements.txt 和 requirements_dev.txt。還好,pip 允許在需求文件內部指定一些額外的參數。你可以需改 requirements_dev.txt 文件支持同時安裝生產文件 requirements.txt 中的需求:

什么是pip?Python新手入門指南

注意這里你使用了完全相同的 -r 開關來安裝生產文件 requirements.txt。需求文件格式允許你在需求文件中指定其他參數。

為生產環境凍結需求文件

你已經創建了生產和開發環境的需求文件,并將它們添加到資源控制器中。這些文件可以靈活 的指定版本,可以通過發布的依賴進行修復 bug。你還可以測試你的應用程序并為發布到生產環境做準備。

因為已經知道開發環境應用程序的所有測試已經正常通過,所以你可能希望確保生產環境的依賴版本與整合管道或構建過程中使用的完全相同。

目前的版本說明符并不能保證會在生產環境部署完全相同的版本,所以你需要凍結說明文件 ,像之前看到的那樣。

你創建了一個干凈的生產環境,并使用 requirements.txt 文件安裝了生產需求。安裝完需求文件之后,你可以凍結當前這個特定的版本,并將輸出轉儲到生產環境的 requirements_lock.txt 文件中。該 requirements_lock.txt 文件中包含精確的版本說明符,并且可以復制當前環境。

搜索可用包

當你擁有更多的 Python 經驗之后,會有一套熟悉的軟件包,并且可以用于大部分應用程序。包 requesta 與 pytest 對于補充你的 Python 工具箱來說,都是很好的選擇。

有時你需要解決不同的問題,并想要找到一個可以幫助你解決問題的工具或庫。上面提到,命令 pip help 展示了一個命令 search,可以搜索在 PyPI 上發布包。

我們看看這個命令有什么用:

什么是pip?Python新手入門指南
什么是pip?Python新手入門指南

這個命令給出了一組選項以及一個 參數。query 是一個用于搜索的字符串,可以匹配包名及描述。

注意:你可以使用 pip help 檢索其它支持的命令的信息。

假設你的應用需要訪問一個使用 OAuth2 授權的服務。理想情況下,會有一個庫使用 requests 執行或者其它類似的接口實現。用 pip 到 PyPI 上搜索一下:

什么是pip?Python新手入門指南

search 命令選項生成了一個相當大的包集合。其中一些看起來像 django-oauth 這樣指定了一個服務或技術。希望找到一個像是 requests-oauth 的信息。很不幸,除了簡短的描述,并沒有其它信息。

多數情況下,你希望直接在 PyPI 的網站搜索包。PyPI 為其索引提供了搜索功能,并通過包中公開的元數據(如框架,主題,開發狀態等)過濾搜索結果。

PyPI 中用同一個術語搜索可能會產生大量的結果,不過你可以對它們進行分類過濾。比如,如果你想要找到可以幫助你開發應用的庫,你可以展開 Intended Audience 并選擇 Developers。另外,你可能還需要一個穩定且可用于生產的包,可以展開 Development Status 并選擇 Production/Stable。

什么是pip?Python新手入門指南

你可以應用其他過濾器以及調整搜索詞,直到找到你想要的包。

搜索結果提供了一個包頁面的鏈接,包含了更多的信息以及想要的文檔。下面我們看看 requests-oauth2 的信息:

什么是pip?Python新手入門指南

這個項目頁面提供了更多的信息,而且看起來還有一個指向 Home 頁的鏈接。該鏈接指向 Github 上的項目倉庫。你可以看到項目相關的更多信息以及一些使用示例。

看到初始源代碼倉庫,像是找到了無價的財富。在那里,你可以通過查看最新的提交日志,PR(pull request)次數以及打開的 issues 等問題來找到一些項目的狀態和提示。

另外還有一個查找包的方式,Google。被廣泛使用的 Python 庫會展示在 google 搜索的頂部,并且你應該能看到指向 PyPI 中包或者源代碼倉庫的鏈接。

找到一個合適包需要花費一些時間研究,但是只要找到了,就可以為你的開發過程提速。

卸載包

有時候你不得不卸載一個軟件包。要么是你找到了一個更好的包來替代它,要么是確實不需要某些功能了。卸載軟件包會有一些棘手。

注意這里,當你安裝了 requests,pip 同時也安裝了其他的依賴。你安裝的包越多,多個包擁有相同的依賴的可能性越大。這里 pip 的 show 命令就派上用場了。

卸載包之前,先確保你已經對這個包運行了 show 命令:

[圖片上傳失敗...(image-63734b-1565242498214)]

注意最后的兩個屬性 Requires 和 Required-by。show 命令向我們展示了 requests 需要依賴 urllib3,certifi,chardet 和 idna。你可能希望卸載其中的兩個。而且你可以看到 requests 沒有被其他包引用,所以它可以安全地卸載。

你應該對 requests 中所有的依賴都運行一下 show 命令,以確保沒有其他庫依賴它們。你了解了這些依賴次序之后,就可以使用 uninstall 命令來卸載它們。

什么是pip?Python新手入門指南

卸載包會顯示將要刪除的文件并要求確認。如果你確認要卸載這個包并且已經檢查了它的依賴關系,知道沒有其他包在使用這個包,那么可以使用 -y 開關來隱藏文件列表和確認提示信息:

什么是pip?Python新手入門指南

你可以一次調用指定所有你想卸載的包:

什么是pip?Python新手入門指南

你還可以通過提供 -r 選項來刪除需求文件中列出的全部軟件包。這個命令會對每一個包都提示確認信息,如果你已經明確知曉你的操作,可以通過 -y 開關禁止這些提示:

什么是pip?Python新手入門指南

在你想要卸載包時,一直都要記得檢查一遍依賴項。你可能希望卸載一個軟件包的所有依賴,不過如果有其它軟件包在使用這些依賴,會導致程序崩潰。

pip 的替代品

pip 是所有 Pythonista 必備的基本工具,很多應用程序和項目使用它作為軟件包管理器。本教程幫助你了解基礎知識,而 Python 社區非常積極的為其它開發人員提供了很棒的工具和庫。其中包括 pip 的替代品,期望實現簡單高效的包管理。

在本節,你將了解到 Python 中其它可用的包管理工具。

萬能的 Conda

Conda 是一個包括 Python 在內的多種語言的包、依賴及環境管理器。實際上,它最早來源于 Anaconda,作為 Python 中研究數據科學的包出現。

Conda 廣泛用于數據科學和機器學習應用程序,并使用自己的索引來托管兼容的軟件包。

Conda 不僅可以管理包的依賴項,還可以管理應用的虛擬環境,安裝兼容并存的 Python 版本,為生產部署打包應用。

在 Windows 系統上為機器學習設置 Python 很好的介紹了 Conda,它探討了包和環境管理。唯一與 Windows 相關的特定信息是安裝,因此如果你使用的是其他系統平臺,它仍然是可信的。

Pipenv

Pipenv 是另外一種包管理工具,旨在為 Python “提供全世界最好的包”。由于將虛擬環境與包管理合并到一個工具中,pipenv 在 Python 社區獲得了極大的關注。

它還解決了在使用 pip 手動管理依賴關系是遇到的一些常見問題,比如,包的版本,隔離開發與生產環境依賴,鎖定生產環境版本等。

Pipenv:新的 Python 打包工具指南是一份很好的學習 Pipenv 及其包管理的入門材料。盡管這篇文章的標簽是中級,但是作者對讀者做了很好的引導,初學 Python 的人也能理解這篇文章。

Poetry

Poetry 是另一個受到大量關注的 pip 替代品。與 Pipenv 類似,它簡化了包的版本管理并隔離了開發環境與生產環境的依賴,而且它將依賴隔離到一個虛擬環境中運行。

如果你已經了解 JavaScript 和 npm,會覺得 Poetry 非常熟悉。它不只是管理包,還可以幫助你為應用和庫構建發行版本并部署到 PyPI。如何向 PyPI 發布一個開源的 Python 包中一個很棒的 Poetry 介紹可以幫你入門。

總結:什么是 pip?

本教程回答了問題:什么是 pip?你現在已經知道,pip 是 Python 的包管理器,被很多項目用于依賴管理。現在 Python 安裝器已經包含了 pip,使它成為所有的 Pythonista 都應當會用的基礎工具。

Python 提供了一個適用于開發各種應用的標準庫擴展,但是 Python 活躍的社區提供了更多的工具和庫,可以加速 Python 應用開發。

這些工具和庫都發布在 Python 包索引(PyPI)上,并且使用 pip 允許開發者在自己的環境中安裝它們。

通過這篇教程,你可以學到:

1. 在命令行使用 pip 以及需求文件安裝新的軟件包

2. 管理依賴,隔離開發與生產環境,以及創建一個鎖定的需求文件

3. 通過 pip 和 PyPI 查找包

4. 在卸載包之前評估包依賴,以及如何卸載包此外,你已經了解到保持依賴處于最新的重要性,而且,pip 的很多替代品可以幫你管理這些依賴。

如果你有任何問題,可以隨時在下面的評論部分留言,你還可以隨時在 pip 文檔頁面獲取更多信息。

英文原文:https://realpython.com/what-is-pip/譯者:敦偉
注:我這有個學習Python基地,里面有很多學習資料,感興趣的+Q群:895817687


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 久久综合久色欧美综合狠狠 | 91在线观看 | WWW.亚洲最大夜色伊人 | 亚洲尻逼视频 | 性高跟鞋xxxxhd4kvideos | 日韩大尺度电影在线观看 | 黄网免费看 | 超碰在线观看97 | 成人网18视频网站 | 亚洲经典在线中文字幕 | 五月激情网站 | 成人亚洲综合 | 欧美a级成人淫片免费看 | 日韩久久久久久 | 色综合色综合网色综合 | 免费人成又黄又爽的视频强 | 久操国产 | 免费成人在线网站 | 日本九九视频 | 国产乱码一区二区三区四 | 成人国产在线观看 | 精久久久 | 成人九色| 不卡一区 | 亚洲欧美中日韩中文字幕 | 中文字幕在线免费看 | 亚洲免费人成在线视频观看 | 亚洲中午字幕 | 欧洲一区二区 | www.天天操.com | 亚洲一区在线观看视频 | 夜精品A片观看无码一区二区 | 2019天天干夜夜操 | 色五五月五月开 | 久久99精品久久久久久秒播 | 日本高清免费网站 | 精品视频久久 | 久久亚洲国产精品日日av夜夜 | 亚洲午夜无码毛片AV久久 | 猛草视频 | 亚洲精品中文字幕 |