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

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

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

pip幾個常用的用法

科技綠洲 ? 來源:Python實用寶典 ? 作者:Python實用寶典 ? 2023-10-21 10:26 ? 次閱讀

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

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

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

當你在一個復雜的項目環(huán)境中,如果沒有一個有效的依賴包管理方案,項目的維護將會是一個大問題。

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

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

1. 查詢軟件包

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

$ pip list

查詢 pypi 上含有某名字的包

$ pip search pkg

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

$ pip list --outdated

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

$ pip show pkg

2. 下載軟件包

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

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

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

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

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

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

3. 安裝軟件包

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

如下所示

$ pip install requests

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

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

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

3.2 限定版本進行軟件包安裝

以下三種,對單個 python 包的版本進行了約束

# 所安裝的包的版本為 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

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

# 導出依賴包列表
pip freeze >requirements.txt

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

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

3.3 限制不使用二進制包安裝

由于默認情況下,wheel 包的平臺是運行 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 包,這種包在安裝時會進行編譯,所以花費的時間會長一些。

# 下載非二進制的包
$ pip download --no-binary=:all: pkg

#安裝非二進制的包
$ pip install pkg --no-binary

3.4 指定代理服務器安裝

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

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

  1. 下載離線包拷貝到內(nèi)網(wǎng)機器中安裝
  2. 使用代理服務器轉(zhuǎn)發(fā)請求

第一種方法,雖說可行,但有相當多的弊端

  • 步驟繁雜,耗時耗力
  • 無法處理包的依賴問題

這里重點來介紹,第二種方法:

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

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

對于這個路徑,說明幾點

# 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%pippip.ini
%HOME%pippip.ini
C:Documents and SettingsAll UsersApplication DataPyPApippip.conf (Windows XP)
C:ProgramDataPyPApippip.conf (Windows 7及以后)
  • 若在你的機子上沒有此文件,則自行創(chuàng)建即可

如何配置,這邊給個樣例:

[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)境中的這個包可被該機器上的所有擁有管理員權(quán)限的用戶使用。

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

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

慶幸的是,還真有。

我能想到的有兩種方法:

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

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

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

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

pip install --user pkg

來舉個例子

# 在全局環(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 只安裝在當前用戶環(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: me@kennethreitz.org
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 ~]$

當你身處個人用戶環(huán)境中,python 導包時會先檢索當前用戶環(huán)境中是否已安裝這個包,已安裝則優(yōu)先使用,未安裝則使用全局環(huá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 延長超時時間

若網(wǎng)絡(luò)情況不是很好,在安裝某些包時經(jīng)常會因為 ReadTimeout 而失敗。

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

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

有的,可以通過延長超時時間。

$ pip install --default-timeout=100 < packages >

4. 卸載軟件包

就一條命令,不再贅述

$ pip uninstall pkg

5. 升級軟件包

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

$ pip install --upgrade pkg

在升級的時候,其實還有一個不怎么用到的選項 --upgrade-strategy,它是用來指定升級策略。

它的可選項只有兩個:

  • eager :升級全部依賴包
  • only-if-need:只有當舊版本不能適配新的父依賴包時,才會升級。

在 pip 10.0 版本之后,這個選項的默認值是 only-if-need,因此如下兩種寫法是一互致的。

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

6. 配置文件

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

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

這時候,其實可以將這個源寫進 pip 的配置文件里。以后安裝的時候,就默認從你配置的這個 源里安裝了。

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

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

然后進入這個 文件夾,新建一個 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)系,你只要收藏本文,等到要用的時候再來查閱即可。

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

    關(guān)注

    14

    文章

    7486

    瀏覽量

    88544
  • 軟件包
    +關(guān)注

    關(guān)注

    0

    文章

    99

    瀏覽量

    11567
  • python
    +關(guān)注

    關(guān)注

    55

    文章

    4768

    瀏覽量

    84378
收藏 人收藏

    評論

    相關(guān)推薦

    元器件PIP(堆疊封裝)和PoP(堆疊組裝)的比較

    元器件PIP(堆疊封裝)和PoP(堆疊組裝)的比較   1. PiP (Package In Package,堆疊封裝)  PiP一般稱堆疊封
    發(fā)表于 11-20 15:47 ?6875次閱讀

    華為NFC有哪些常用用法

    什么是華為NFC功能?華為NFC有哪些常用用法?
    發(fā)表于 11-03 06:01

    常用的匯編指令及用法進行詳述

    對于 Cortex-A 芯片來講,大部分芯片在上電以后 C 語言環(huán)境還沒準備好,所以第一行程序肯定是匯編的,至于要寫多少匯編程序,那就看你能在哪一步把 C 語言環(huán)境準備好。本文對常用的匯編指令及用法做了詳述,便于初學者入門
    發(fā)表于 12-20 07:11

    pip 的超全使用指南

    --upgrade-strategy only-if-need6. 配置文件由于在使用 pip 安裝一些包時,默認會使用 pip 的官方源,所以經(jīng)常會報網(wǎng)絡(luò)超時失敗。常用的解決辦法是,在安裝包時,使用 -i
    發(fā)表于 03-11 16:03

    常用燈頭規(guī)格及用法介紹

    常用燈頭規(guī)格及用法介紹 簡述常用燈頭規(guī)格及用法介紹
    發(fā)表于 04-19 15:40 ?56次下載

    Windows XP系統(tǒng)任務管理器幾個另類用法

    Windows XP系統(tǒng)任務管理器幾個另類用法 Windows任務管理器可以用來察看當前運行的程序、啟動的進程、CPU及內(nèi)存使用情況等信息,這為
    發(fā)表于 02-23 13:55 ?961次閱讀

    常用法蘭標準查詢

    本內(nèi)容提供了常用法蘭標準查詢的小工具,希望對大家有所幫助
    發(fā)表于 04-18 15:10 ?91次下載
    <b class='flag-5'>常用法</b>蘭標準查詢

    Java數(shù)組的常用方法_Java:數(shù)組工具類Arrays類的常用方法的用法及代碼

    本文主要詳細介紹了Java數(shù)組的常用方法以及數(shù)組工具類Arrays類的常用方法的用法及代碼。
    發(fā)表于 01-29 10:25 ?2905次閱讀

    幾個常用電路

    本文將介紹幾個常用電路,詳情請看下文。
    的頭像 發(fā)表于 03-04 15:02 ?1.6w次閱讀
    <b class='flag-5'>幾個</b><b class='flag-5'>常用</b>電路

    SOCKET C語言網(wǎng)絡(luò)編程常用接口及用法資料免費下載

    本文檔的主要內(nèi)容詳細介紹的是SOCKET C語言網(wǎng)絡(luò)編程常用接口及用法資料免費下載。
    發(fā)表于 10-28 08:00 ?0次下載
    SOCKET C語言網(wǎng)絡(luò)編程<b class='flag-5'>常用</b>接口及<b class='flag-5'>用法</b>資料免費下載

    pip安裝更換鏡像

    使用pip來安裝python包有時候安裝起來會非常慢,因此需要換成國內(nèi)的源來加速下載。
    的頭像 發(fā)表于 01-13 15:38 ?869次閱讀

    探究寄存機的電路結(jié)構(gòu)以及慣常用法

    *本文將探究什么是寄存器,寄存器的電路結(jié)構(gòu),寄存器與內(nèi)存的異同以及寄存器的慣常用法。* ```
    的頭像 發(fā)表于 01-30 17:08 ?1049次閱讀
    探究寄存機的電路結(jié)構(gòu)以及慣<b class='flag-5'>常用法</b>

    使用Python Pip的10個技巧

    眾所周知,pip 可以安裝、更新、卸載 Python 的第三方庫,非常方便。你們中的許多人可能已經(jīng)使用 pip 很長時間了,但不清楚它有哪些還不錯的功能。希望我今天分享的技巧能讓你從 Python pip 中受益。
    的頭像 發(fā)表于 04-15 09:53 ?544次閱讀

    nmcli命令的一些常用選項和用法

    以下是nmcli命令的一些常用選項和用法: connection show -- 顯示所有網(wǎng)絡(luò)連接的詳細信息。 connection up --啟動網(wǎng)絡(luò)連接。 connection down -- 停止網(wǎng)絡(luò)連接。
    發(fā)表于 10-08 11:15 ?1264次閱讀
    nmcli命令的一些<b class='flag-5'>常用</b>選項和<b class='flag-5'>用法</b>

    linux常用命令及用法

    Linux是一種開源的操作系統(tǒng),它以穩(wěn)定、高效和安全的特點受到廣大用戶的喜愛。掌握Linux的常用命令及其用法對于操作系統(tǒng)的管理和開發(fā)都至關(guān)重要。本文將詳盡、詳實、細致地介紹Linux常用命令及其
    的頭像 發(fā)表于 11-17 09:47 ?614次閱讀