0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

一文了解pip的超全使用指南

python爬蟲知識分享 ? 來源:python爬蟲知識分享 ? 作者:python爬蟲知識分享 ? 2022-03-11 16:03 ? 次閱讀

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 包的平臺是運(yùn)行 pip download 命令 的平臺,所以可能出現(xiàn)平臺不適配的情況。

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

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

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

# 下載非二進(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 安裝包,就會失敗。

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

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

使用代理服務(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]
# 信任阿里云的鏡像源,否則會有警告
trusted-host=mirrors.aliyun.com

3.5 安裝用戶私有軟件包

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

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

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

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

pip install --user pkg

來舉個(gè)例子

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

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

# 從 Location 屬性可發(fā)現(xiàn) requests 只安裝在當(dāng)前用戶環(huán)境中
[test@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: me@kennethreitz.org
Installer: pip
License: Apache 2.0
Location: /home/test/.local/lib/python2.7/site-packages
[test@localhost ~]$ exit
logout

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

當(dāng)你身處個(gè)人用戶環(huán)境中,python 導(dǎo)包時(shí)會先檢索當(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)常會因?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í),才會升級。

在 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)會使用 pip 的官方源,所以經(jīng)常會報(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


審核編輯:湯梓紅
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 軟件
    +關(guān)注

    關(guān)注

    69

    文章

    4721

    瀏覽量

    87099
  • 配置
    +關(guān)注

    關(guān)注

    1

    文章

    187

    瀏覽量

    18343
  • python
    +關(guān)注

    關(guān)注

    55

    文章

    4774

    瀏覽量

    84386
收藏 人收藏

    評論

    相關(guān)推薦

    RTC時(shí)鐘使用指南:簡單步驟,實(shí)用成果

    今天展示的是RTC時(shí)鐘使用指南,輕松學(xué)習(xí),完美成果。
    的頭像 發(fā)表于 11-08 11:40 ?115次閱讀
    RTC時(shí)鐘<b class='flag-5'>使用指南</b>:簡單步驟,實(shí)用成果

    技術(shù)指南 | 深視智能SRI系列體式激光三維輪廓測量儀快速使用指南

    技術(shù)指南 | 深視智能SRI系列體式激光三維輪廓測量儀快速使用指南
    的頭像 發(fā)表于 10-29 08:08 ?102次閱讀
    技術(shù)<b class='flag-5'>指南</b> | 深視智能SRI系列<b class='flag-5'>一</b>體式激光三維輪廓測量儀快速<b class='flag-5'>使用指南</b>

    技術(shù)指南 | 深視智能SCI系列光譜共焦位移傳感器快速使用指南

    技術(shù)指南 | 深視智能SCI系列光譜共焦位移傳感器快速使用指南
    的頭像 發(fā)表于 10-22 08:06 ?144次閱讀
    技術(shù)<b class='flag-5'>指南</b> | 深視智能SCI系列光譜共焦位移傳感器快速<b class='flag-5'>使用指南</b>

    深視智能SGI系列激光位移傳感器快速使用指南

    深視智能SGI系列激光位移傳感器快速使用指南
    的頭像 發(fā)表于 07-27 08:45 ?331次閱讀
    深視智能SGI系列激光位移傳感器快速<b class='flag-5'>使用指南</b>

    深視智能SD33系列小型激光位移傳感器使用指南

    深視智能SD33系列小型激光位移傳感器使用指南
    的頭像 發(fā)表于 07-27 08:44 ?350次閱讀
    深視智能SD33系列小型激光位移傳感器<b class='flag-5'>使用指南</b>

    GD32F10x 固件庫使用指南

    電子發(fā)燒友網(wǎng)站提供《GD32F10x 固件庫使用指南.pdf》資料免費(fèi)下載
    發(fā)表于 05-22 14:15 ?26次下載

    熱敏FET使用指南

    電子發(fā)燒友網(wǎng)站提供《熱敏FET使用指南.pdf》資料免費(fèi)下載
    發(fā)表于 02-22 09:35 ?0次下載
    熱敏FET<b class='flag-5'>使用指南</b>

    AT32F423 I 2C使用指南

    電子發(fā)燒友網(wǎng)站提供《AT32F423 I 2C使用指南.pdf》資料免費(fèi)下載
    發(fā)表于 02-01 09:30 ?0次下載
    AT32F423 I 2C<b class='flag-5'>使用指南</b>

    AT32F425入門使用指南

    電子發(fā)燒友網(wǎng)站提供《AT32F425入門使用指南.pdf》資料免費(fèi)下載
    發(fā)表于 12-18 11:14 ?6次下載
    AT32F425入門<b class='flag-5'>使用指南</b>

    AT32F435 & AT32F437入門使用指南

    電子發(fā)燒友網(wǎng)站提供《AT32F435 & AT32F437入門使用指南.pdf》資料免費(fèi)下載
    發(fā)表于 12-18 11:13 ?1次下載
    AT32F435 & AT32F437入門<b class='flag-5'>使用指南</b>

    帶你了解 DAC

    了解 DAC
    的頭像 發(fā)表于 12-07 15:10 ?8482次閱讀
    <b class='flag-5'>一</b><b class='flag-5'>文</b>帶你<b class='flag-5'>了解</b> DAC

    了解剛?cè)峤Y(jié)合制造過程

    了解剛?cè)峤Y(jié)合制造過程
    的頭像 發(fā)表于 12-04 16:22 ?692次閱讀

    Speos Sensor System(SSS)的使用指南

    本文是Speos Sensor System(SSS)的使用指南,這是個(gè)強(qiáng)大的解決方案,用于camera sensor模擬結(jié)果的后處理。本文的目的是通過個(gè)例子來理解如何正確使用SSS。當(dāng)然本文描述的分析步驟適合任何案例。
    的頭像 發(fā)表于 12-03 09:49 ?1470次閱讀
    Speos Sensor System(SSS)的<b class='flag-5'>使用指南</b>

    了解 PCB 的有效導(dǎo)熱系數(shù)

    了解 PCB 的有效導(dǎo)熱系數(shù)
    的頭像 發(fā)表于 11-24 15:48 ?1817次閱讀
    <b class='flag-5'>一</b><b class='flag-5'>文</b><b class='flag-5'>了解</b> PCB 的有效導(dǎo)熱系數(shù)

    運(yùn)算放大器的使用指南

    電子發(fā)燒友網(wǎng)站提供《運(yùn)算放大器的使用指南.rar》資料免費(fèi)下載
    發(fā)表于 11-18 14:55 ?3次下載
    運(yùn)算放大器的<b class='flag-5'>使用指南</b>