<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          一份詳盡的pip使用小抄,值得收藏備查

          共 5614字,需瀏覽 12分鐘

           ·

          2022-01-24 01:37

          大家好,歡迎來到 Crossin的編程教室 !

          所有的 Python 開發(fā)者都清楚,Python 之所以如此受歡迎,能夠在眾多高級語言中,脫穎而出,除了語法簡單,上手容易之外,更多還要?dú)w功于 Python 生態(tài)的完備,有數(shù)以萬計(jì)的 Python 愛好者愿意以 Python 為基礎(chǔ)封裝出各種有利于開發(fā)的第三方工具包。

          這才使用我們能夠以最快的速度開發(fā)出一個(gè)滿足基本需要的項(xiàng)目,而不是每次都重復(fù)造輪子。

          Python 從1991年誕生到現(xiàn)在,已經(jīng)過去31個(gè)年頭了,這其間產(chǎn)生了數(shù)以萬計(jì)的第三方包,且每個(gè)包都會(huì)不斷更新,會(huì)有越來越多的版本。

          當(dāng)你在一個(gè)復(fù)雜的項(xiàng)目環(huán)境中,如果沒有一個(gè)有效的依賴包管理方案,項(xiàng)目的維護(hù)將會(huì)是一個(gè)大問題。

          pip 是官方推薦的包管理工具,在大多數(shù)開發(fā)者眼里,pip 幾乎是 Python 的標(biāo)配。

          說到 pip ,大家都不會(huì)陌生。但我相信不少人,只是熟悉幾個(gè)常用的用法,而對于其他幾個(gè)低頻且實(shí)用的用法,卻知之甚少,這兩天,我查閱官方文檔,把這些用法整理了一下,應(yīng)該是網(wǎng)絡(luò)上比較全的介紹。

          1. 查詢軟件包

          查詢當(dāng)前環(huán)境安裝的所有軟件包

          $?pip?list

          查詢 pypi 上含有某名字的包

          $?pip?search?pkg

          查詢當(dāng)前環(huán)境中可升級的包

          $?pip?list?--outdated

          查詢一個(gè)包的詳細(xì)內(nèi)容

          $?pip?show?pkg

          2. 下載軟件包

          在不安裝軟件包的情況下下載軟件包到本地

          $?pip?download?--destination-directory?/local/wheels?-r?requirements.txt

          下載完,總歸是要安裝的,可以指定這個(gè)目錄中安裝軟件包,而不從 pypi 上安裝。

          $?pip?install?--no-index?--find-links=/local/wheels?-r?requirements.txt

          當(dāng)然你也從你下載的包中,自己構(gòu)建生成 wheel 文件

          $?pip?install?wheel
          $?pip?wheel?--wheel-dir=/local/wheels?-r?requirements.txt

          3. 安裝軟件包

          使用 pip install 可以很方便地從 pypi 上搜索下載并安裝 python 包。

          如下所示

          $?pip?install?requests

          這是安裝包的基本格式,我們也可以為其添加更多參數(shù)來實(shí)現(xiàn)不同的效果。

          3.1 只從本地安裝,而不從 pypi 安裝

          #?前提你得保證你已經(jīng)下載?pkg?包到?/local/wheels?目錄下
          $?pip?install?--no-index?--find-links=/local/wheels?pkg

          3.2 限定版本進(jìn)行軟件包安裝

          以下三種,對單個(gè) python 包的版本進(jìn)行了約束

          #?所安裝的包的版本為?2.1.2
          $?pip?install?pkg==2.1.2

          #
          ?所安裝的包必須大于等于?2.1.2
          $?pip?install?pkg>=2.1.2

          #
          ?所安裝的包必須小于等于?2.1.2
          $?pip?install?pkg<=2.1.2

          以下命令用于管理/控制整個(gè) python 環(huán)境的包版本

          #?導(dǎo)出依賴包列表
          pip?freeze?>requirements.txt

          #
          ?從依賴包列表中安裝
          pip?install?-r?requirements.txt

          #
          ?確保當(dāng)前環(huán)境軟件包的版本(并不確保安裝)
          pip?install?-c?constraints.txt

          3.3 限制不使用二進(jìn)制包安裝

          由于默認(rèn)情況下,wheel 包的平臺(tái)是運(yùn)行 pip download 命令 的平臺(tái),所以可能出現(xiàn)平臺(tái)不適配的情況。

          比如在 MacOS 系統(tǒng)下得到的 pymongo-2.8-cp27-none-macosx_10_10_intel.whl 就不能在 linux_x86_64 安裝。

          使用下面這條命令下載的是 tar.gz 的包,可以直接使用 pip install 安裝。

          比 wheel 包,這種包在安裝時(shí)會(huì)進(jìn)行編譯,所以花費(fèi)的時(shí)間會(huì)長一些。

          #?下載非二進(jìn)制的包
          $?pip?download?--no-binary=:all:?pkg

          #
           安裝非二進(jìn)制的包
          $?pip?install?pkg?--no-binary

          3.4 指定代理服務(wù)器安裝

          當(dāng)你身處在一個(gè)內(nèi)網(wǎng)環(huán)境中時(shí),無法直接連接公網(wǎng)。這時(shí)候你使用pip install 安裝包,就會(huì)失敗。

          面對這種情況,可以有兩種方法:

          1. 下載離線包拷貝到內(nèi)網(wǎng)機(jī)器中安裝

          2. 使用代理服務(wù)器轉(zhuǎn)發(fā)請求

          第一種方法,雖說可行,但有相當(dāng)多的弊端

          • 步驟繁雜,耗時(shí)耗力

          • 無法處理包的依賴問題

          這里重點(diǎn)來介紹,第二種方法:

          $?pip?install?--proxy?[user:passwd@]http_server_ip:port?pkg

          每次安裝包就發(fā)輸入長長的參數(shù),未免有些麻煩,為此你可以將其寫入配置文件中:$HOME/.config/pip/pip.conf

          對于這個(gè)路徑,說明幾點(diǎn)

          • 不同的操作系統(tǒng),路徑各不相同

          #?Linux/Unix:
          /etc/pip.conf
          ~/.pip/pip.conf
          ~/.config/pip/pip.conf

          #
          ?Mac?OSX:
          ~/Library/Application?Support/pip/pip.conf
          ~/.pip/pip.conf
          /Library/Application?Support/pip/pip.conf

          #
          ?Windows:
          %APPDATA%\pip\pip.ini
          %HOME%\pip\pip.ini
          C:\Documents?and?Settings\All?Users\Application?Data\PyPA\pip\pip.conf?(Windows?XP)
          C:\ProgramData\PyPA\pip\pip.conf?(Windows?7及以后)?
          • 若在你的機(jī)子上沒有此文件,則自行創(chuàng)建即可

          如何配置,這邊給個(gè)樣例:

          [global]
          index-url?=?http://mirrors.aliyun.com/pypi/simple/?

          #?替換出自己的代理地址,格式為[user:passwd@]proxy.server:port
          proxy=http://xxx.xxx.xxx.xxx:8080?

          [install]

          #?信任阿里云的鏡像源,否則會(huì)有警告
          trusted-host=mirrors.aliyun.com?

          3.5 安裝用戶私有軟件包

          很多人可能還不清楚,python 的安裝包是可以用戶隔離的。

          如果你擁有管理員權(quán)限,你可以將包安裝在全局環(huán)境中。在全局環(huán)境中的這個(gè)包可被該機(jī)器上的所有擁有管理員權(quán)限的用戶使用。

          如果一臺(tái)機(jī)器上的使用者不只一樣,自私地將在全局環(huán)境中安裝或者升級某個(gè)包,是不負(fù)責(zé)任且危險(xiǎn)的做法。

          面對這種情況,我們就想能否安裝單獨(dú)為我所用的包呢?

          慶幸的是,還真有。

          我能想到的有兩種方法:

          1. 使用虛擬環(huán)境

          2. 將包安裝在用戶的環(huán)境中

          虛擬環(huán)境,之前寫過幾篇文章,這里不再展開講。

          今天的重點(diǎn)是第二種方法,教你如何安裝用戶私有的包?

          命令也很簡單,只要加上 --user 參數(shù),pip 就會(huì)將其安裝在當(dāng)前用戶的 ~/.local/lib/python3.x/site-packages 下,而其他用戶的 python 則不會(huì)受影響。

          pip?install?--user?pkg

          來舉個(gè)例子

          #?在全局環(huán)境中未安裝?requests
          [root@localhost?~]#?pip?list?|?grep?requests???
          [root@localhost?~]#?su?-?wangbm
          [root@localhost?~]#?

          #
          ?由于用戶環(huán)境繼承自全局環(huán)境,這里也未安裝
          [wangbm@localhost?~]#?pip?list?|?grep?requests?
          [wangbm@localhost?~]#?pip?install?--user?requests??
          [wangbm@localhost?~]#?pip?list?|?grep?requests?
          requests?(2.22.0)
          [wangbm@localhost?~]#?

          #
          ?從?Location?屬性可發(fā)現(xiàn)?requests?只安裝在當(dāng)前用戶環(huán)境中
          [wangbm@ws_compute01?~]$?pip?show?requests
          ---
          Metadata-Version:?2.1
          Name:?requests
          Version:?2.22.0
          Summary:?Python?HTTP?for?Humans.
          Home-page:?http://python-requests.org
          Author:?Kenneth?Reitz
          Author-email:[email protected]
          Installer:?pip
          License:?Apache?2.0
          Location:?/home/wangbm/.local/lib/python2.7/site-packages
          [wangbm@localhost?~]$?exit
          logout

          #
          ?退出?wangbm?用戶,在?root?用戶環(huán)境中發(fā)現(xiàn)?requests?未安裝
          [root@localhost?~]$?pip?list?|?grep?requests
          [root@localhost?~]$?

          當(dāng)你身處個(gè)人用戶環(huán)境中,python 導(dǎo)包時(shí)會(huì)先檢索當(dāng)前用戶環(huán)境中是否已安裝這個(gè)包,已安裝則優(yōu)先使用,未安裝則使用全局環(huán)境中的包。

          驗(yàn)證如下:

          >>>?import?sys
          >>>?from?pprint?import?pprint?
          >>>?pprint(sys.path)
          ['',
          ?'/usr/lib64/python27.zip',
          ?'/usr/lib64/python2.7',
          ?'/usr/lib64/python2.7/plat-linux2',
          ?'/usr/lib64/python2.7/lib-tk',
          ?'/usr/lib64/python2.7/lib-old',
          ?'/usr/lib64/python2.7/lib-dynload',
          ?'/home/wangbm/.local/lib/python2.7/site-packages',
          ?'/usr/lib64/python2.7/site-packages',
          ?'/usr/lib64/python2.7/site-packages/gtk-2.0',
          ?'/usr/lib/python2.7/site-packages',
          ?'/usr/lib/python2.7/site-packages/pip-18.1-py2.7.egg',
          ?'/usr/lib/python2.7/site-packages/lockfile-0.12.2-py2.7.egg']
          >>>?

          3.6 延長超時(shí)時(shí)間

          若網(wǎng)絡(luò)情況不是很好,在安裝某些包時(shí)經(jīng)常會(huì)因?yàn)?ReadTimeout 而失敗。

          對于這種情況,一般重試幾次就好了。

          但是這樣難免有些麻煩,有沒有更好的解決方法呢?

          有的,可以通過延長超時(shí)時(shí)間。

          $?pip?install?--default-timeout=100?

          4. 卸載軟件包

          就一條命令,不再贅述

          $?pip?uninstall?pkg

          5. 升級軟件包

          想要對現(xiàn)有的 python 進(jìn)行升級,其本質(zhì)上也是先從 pypi 上下載最新版本的包,再對其進(jìn)行安裝。所以升級也是使用 pip install,只不過要加一個(gè)參數(shù) --upgrade。

          $?pip?install?--upgrade?pkg

          在升級的時(shí)候,其實(shí)還有一個(gè)不怎么用到的選項(xiàng) --upgrade-strategy,它是用來指定升級策略。

          它的可選項(xiàng)只有兩個(gè):

          • eager :升級全部依賴包

          • only-if-need:只有當(dāng)舊版本不能適配新的父依賴包時(shí),才會(huì)升級。

          在 pip 10.0 版本之后,這個(gè)選項(xiàng)的默認(rèn)值是 only-if-need,因此如下兩種寫法是一互致的。

          pip?install?--upgrade?pkg1?
          pip?install?--upgrade?pkg1?--upgrade-strategy?only-if-need

          6. 配置文件

          由于在使用 pip 安裝一些包時(shí),默認(rèn)會(huì)使用 pip 的官方源,所以經(jīng)常會(huì)報(bào)網(wǎng)絡(luò)超時(shí)失敗。

          常用的解決辦法是,在安裝包時(shí),使用 -i 參數(shù)指定一個(gè)國內(nèi)的鏡像源。但是每次指定就很麻煩呀,還要打超長的一串字母。

          這時(shí)候,其實(shí)可以將這個(gè)源寫進(jìn) pip 的配置文件里。以后安裝的時(shí)候,就默認(rèn)從你配置的這個(gè) 源里安裝了。

          那怎么配置呢?文件文件在哪?

          使用win+r 輸入 %APPDATA% 進(jìn)入用戶資料文件夾,查看有沒有一個(gè) pip 的文件夾,若沒有則創(chuàng)建之。

          然后進(jìn)入這個(gè) 文件夾,新建一個(gè) pip.ini 的文件,內(nèi)容如下

          [global]
          time-out=60
          index-url=https://pypi.tuna.tsinghua.edu.cn/simple/
          [install]
          trusted-host=tsinghua.edu.cn

          以上幾乎包含了 pip 的所有使用場景,也許有不少用法你還沒有用過,不過沒關(guān)系,你只要收藏本文,等到要用的時(shí)候再來查閱即可。

          如果文章對你有幫助,歡迎轉(zhuǎn)發(fā)/點(diǎn)贊/收藏~

          作者:寫代碼的明哥

          來源:Python編程時(shí)光


          _往期文章推薦_

          如何安裝Python的第三方模塊




          如需了解付費(fèi)精品課程教學(xué)答疑服務(wù)
          請?jiān)?strong style="max-width: 100%;overflow-wrap: break-word !important;box-sizing: border-box !important;">Crossin的編程教室內(nèi)回復(fù): 666

          瀏覽 43
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評論
          圖片
          表情
          推薦
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  操逼视频五月天 | 俺来也俺去也色www | 在线视频亚洲无码 | 国产免费操逼 | 天天拍夜夜添 |