[Python] 包管理器Pip

  • python的包管理器pip其实一直在用,但一直没有总结一下。过了许久后,再来摸,又会生疏。索性,那就总结一下吧,以便对此工具,常用常翻常新。

概述:Python包管理器 Pip

  • pipPython的包管理工具,用于安装和管理Python包。‌

pip允许用户从Python包索引(PyPI)下载和安装软件包,确保项目所需的依赖项正确安装。
因此,掌握pip的使用对于Python开发至关重要。

PIP的安装与卸载

检查是否已安装 pip

在使用pip之前,首先需要检查你的系统中是否已经安装了pip。打开终端或命令提示符,输入以下命令:

pip --version

如果已安装,你会看到类似于以下的输出:

(base) C:\Users\xxx>pip --version
pip 24.3.1 from D:\Program\Miniforge3\Lib\site-packages\pip (python 3.12)

安装Pip

  • 如果未安装,可以通过以下步骤进行安装:

安装方式1(通用方法)

Windows: 下载 get-pip.py,然后在命令提示符中运行:

【补充/可忽略】 tar 包下载 url : https://pypi.org/project/pip/#history

python get-pip.py

Linux/Mac: 使用以下命令:

curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
# curl https://bootstrap.pypa.io/get-pip.py -o /opt/get-pip.py

python get-pip.py

安装方式2(Ubuntu)

## 安装
apt-get install python3-pip
# apt-get install python3 python3-pip python3-venv

## 卸载
# apt-get remove python3-pip

安装方式3(CENTOS)

## CentOS yum源 中默认没有 pip,需要安装 扩展源EPEL
yum -y install epel-release

## 安装 pip (python3)
yum -y install python3-pip
## 安装 pip (python2)
## yum -y install python-pip

## 查验版本
pip -V

PIP的使用

安装

  • 安装包‌
pip install {packageName}

# 安装的是最新版本
pip install {packageName} 

# 安装指定版本
pip install {packageName}==1.0.4

# 安装的最小版本
pip install '{packageName}>=1.0.4'


eg : pip install requests

默认安装路径

全局环境: 默认情况下,pip 会将包安装到 Python 的 site-packages 目录中。例

如: 
Windows: C:\Python\XX\Lib\site-packages 
Linux/MacOS: /usr/local/lib/pythonX.X/site-packages

虚拟环境: 如果在虚拟环境中使用 pip 安装,包会被安装到虚拟环境的 lib/site-packages 目录下

  • 安装自己的/当前的工程
pip install .

卸载

pip uninstall {packageName}

查看已安装的包

  • 查看已安装的包‌:

可以列出当前环境中已安装的所有包及其版本

pip list

查看包信息

  • 查看包信息

要查看某个包的详细信息,可以使用pip show命令:

pip show {packageName}

例如

(base) C:\Users\xxx>pip show requests
Name: requests
Version: 2.32.3
Summary: Python HTTP for Humans.
Home-page: https://requests.readthedocs.io
Author: Kenneth Reitz
Author-email: me@kennethreitz.org
License: Apache-2.0
Location: D:\Program\Miniforge3\Lib\site-packages
Requires: certifi, charset_normalizer, idna, urllib3
Required-by: conda, conda_package_streaming, langchain, langchain-community, langsmith, requests-toolbelt
  • 查找包 【已废止/PyPI不建议使用】

如果你不知道要安装哪个包,可以使用pip search命令来查找包:

pip search {keyword}

例如:查找与requests相关的包:

pip search requests

(base) C:\Users\xxx>pip search requests
ERROR: XMLRPC request failed [code: -32500]
RuntimeError: PyPI no longer supports 'pip search' (or XML-RPC search). Please use https://pypi.org/search (via a browser) instead. See https://warehouse.pypa.io/api-reference/xml-rpc.html#deprecated-methods for more information.

卸载包

  • 卸载包:

可以卸载不再需要的包。

pip uninstall {packageName}

例如,卸载requests库可以使用命令pip uninstall requests

执行日志
(base) D:\Workspace\xxx\MindSearch> pip show pydantic
Name: pydantic
Version: 2.6.4
Summary: Data validation using Python type hints
Home-page: https://github.com/pydantic/pydantic
Author:
Author-email: Samuel Colvin <s@muelcolvin.com>, Eric Jolibois <em.jolibois@gmail.com>, Hasan Ramezani <hasan.r67@gmail.com>, Adrian Garcia Badaracco <1755071+adriangb@users.noreply.github.com>, Terrence Dorsey <terry@pydantic.dev>, David Montague <david@pydantic.dev>, Serge Matveenko <lig@countzero.co>, Marcelo Trylesinski <marcelotryle@gmail.com>, Sydney Runkle <sydneymarierunkle@gmail.com>, David Hewitt <mail@davidhewitt.io>
License:
Location: C:\Users\xxx\AppData\Roaming\Python\Python312\site-packages
Requires: annotated-types, pydantic-core, typing-extensions
Required-by: fastapi, gradio, lagent, langchain, langchain-core, langsmith, pydantic-settings

(base) D:\Workspace\xxx\MindSearch> pip uninstall pydantic
Found existing installation: pydantic 2.6.4
Uninstalling pydantic-2.6.4:
  Would remove:
    c:\users\xxx\appdata\roaming\python\python312\site-packages\pydantic-2.6.4.dist-info\*
    c:\users\xxx\appdata\roaming\python\python312\site-packages\pydantic\*
Proceed (Y/n)? Y
  Successfully uninstalled pydantic-2.6.4

更新包

  • 更新包

可以更新已安装的包到最新版本

pip install --upgrade {packageName}

查看帮助信息

  • 查看帮助信息

可以查看pip的所有可用命令和用法说明

pip --help

PIP 常见问题

Q: 配置、使用镜像源

  • 为了加快下载速度,可以使用国内的镜像源。

例如,使用清华大学的镜像源可以通过命令pip install -i https://pypi.tuna.tsinghua.edu.cn/simple package_name来实现。

  • -i 等效于 --index-url
  • 查看配置的镜像源
# 命令1
python -m pip config list

# 命令2
pip config list
  • 临时更换

这种方法仅在当前终端会话有效,关闭窗口后将恢复到默认源。
在执行pip install命令时,只需添加 -i 参数并指定镜像地址

# 清华大学镜像源
pip install package_name -i https://pypi.tuna.tsinghua.edu.cn/simple

# 阿里云源 【推荐】
pip install markdown -i https://mirrors.aliyun.com/pypi/simple/

# 腾讯云源
pip install markdown -i https://mirrors.cloud.tencent.com/pypi/simple/

# 豆瓣源
pip install markdown -i http://pypi.douban.com/simple/
  • 永久更换
# 查看配置
python -m pip config list

# 为了更便捷地操作,推荐采用永久设置的方式。
# 通过`pip config`命令,我们可以更改全局源地址:
# 1、更换为清华源
> python -m pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
Writing to C:\Users\xxx\AppData\Roaming\pip\pip.ini

> python -m pip config list
global.index-url='https://pypi.tuna.tsinghua.edu.cn/simple'

# 2、更换为阿里源 【推荐】
python -m pip config set global.index-url https://mirrors.aliyun.com/pypi/simple
 
# 3、更换腾讯云源
python -m pip config set global.index-url https://mirrors.cloud.tencent.com/pypi/simple/
 
# 4、更换为豆瓣源
python -m pip config set global.index-url http://pypi.douban.com/simple/
 
# 要恢复默认源,只需运行
pip config unset global.index-url

或按如下操作:建个文件 ~/.pip/pip.conf(windows:C:\Users\xxx\AppData\Roaming\pip\pip.ini), 内容如下:

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

[global]
timeout = 6000
index-url = http://e.pypi.python.org/simple
[install]
use-mirrors = true
mirrors = http://e.pypi.python.org

[global]
index-url = http://b.pypi.python.org/simple
[install]
use-mirrors = true
mirrors = http://b.pypi.python.org

Q: 依赖包及版本管理、批量安装多个依赖包 by requirements.txt 【必读】

为什么要使用requirements.txt

  • 主要使用目的:任何应用程序通常需要设置安装所需、并依赖一组类库来满足工作要求。

requirements.txt 文件是指定和一次性安装包的依赖项具体一整套方法。

  • requirements.txt 的作用与类比:

依赖包及依赖版本管理 : Java maven vs. Python pip
依赖定义文件: pom.xml vs. requirements.txt

  • requirements.txt 文件格式:

demo

requests==1.2.0 
Flask==0.10.1
Flask==0.10.1
pandas>=2.2.3
openpyxl

这样我们就可以批量/一次性地安装requirements.txt的多个依赖

pip install -r requirements.txt

requirement 的自动生成方法

除了人工编辑该文件外,还可以自动生成。

  • 方法1:整个环境下的安装包都保存到requirements.txt
pip freeze > requirements.txt

作用范围:pipfreeze命令保存了保存当前Python环境下所有类库包,包括那些你没有在当前项目中使用的类库。 (如果你没有的virtualenv)

生成的requirements.txt:速度非常快,不到1s

absl-py==0.11.0
aiohttp==3.7.3
async-timeout==3.0.1
attrs==20.3.0
boto3==1.16.41
botocore==1.19.41
cachetools==4.2.0
certifi==2020.12.5
chardet==3.0.4
click==7.1.2
dataclasses==0.8
docopt==0.6.2
filelock==3.0.12
Flask==1.1.2
fsspec==0.8.5
future==0.18.2
google-auth==1.24.0
google-auth-oauthlib==0.4.2
goto-statement==1.2
grpcio==1.34.0
idna==2.10
idna-ssl==1.1.0
importlib-metadata==3.3.0
itsdangerous==1.1.0
Jinja2==2.11.2
jmespath==0.10.0
joblib==1.0.0
Markdown==3.3.3
MarkupSafe==1.1.1
mkl-fft==1.2.0
mkl-random==1.1.1
mkl-service==2.3.0
multidict==5.1.0
nltk==3.5
numpy==1.19.4
oauthlib==3.1.0
olefile==0.46
packaging==20.8
pandas==1.1.5
Pillow @ file:///opt/concourse/worker/volumes/live/06069510-e277-4aed-54f4-6dfdcb84a461/volume/pillow_1603822272490/work
pipreqs==0.4.10
...//略
  • 方法2:只生成单个项目中的使用到的安装包
pip install pipreqs
pipreqs .

作用范围:当前项目使用的类库导出生成为requirements.txt。

使用方法:pipreqs 加上当前路径即可。在导出当前项目使用的类库时,先定位到项目根目录,然后调用 pipreqs ./ --encoding=utf8 命令,该命令避免编码错误,并自动在根目录生成 requirements.txt 文件。

生成的requirements.txt:有点慢,耗时1m多

xlwt==1.3.0
tqdm==4.54.1
prefetch_generator==1.0.1
nltk==3.5
transformers==3.4.0
xlrd==1.2.0
torch==1.7.1
XlsxWriter==1.3.7
numpy==1.19.4
requests==2.25.1
scikit_learn==0.24.1

一键安装/批量安装多个依赖包

【温馨提示】
最好先用conda建一个新环境,做好环境隔离。不然,很有可能会污染你原来的环境,会出现以前跑通的代码,现在跑不通了。

  • 首先,可以通过创建一个包含包名称的文本文件
  • 然后,使用命令pip install -r requirements.txt来批量安装多个包。
pip install -r requirements.txt -i https://pypi.douban.com/simple

参考文献

Q: 示例项目 withrequirements.txt

  • 为了更好地理解pip的使用,下面是一个简单的示例项目,展示如何使用pip管理依赖项。
  • 项目依赖
my_project/
│
├── app.py
└── requirements.txt
  • 编写代码
    app.py中,使用requests库进行HTTP请求:
import requests

response = requests.get('https://api.github.com')
print(response.json())
  • 创建requirements.txt

将requests库添加到requirements.txt文件中:

requests==2.24.0
  • 使用Pip安装依赖

在项目目录中,运行以下命令安装依赖:

pip install -r requirements.txt
  • 运行项目

最后,运行app.py文件:

python app.py

你将看到GitHub API的响应输出。

Q: 网络问题

如果在使用pip时遇到网络问题,可以尝试更换镜像源使用离线安装包。例如:

pip install -i https://mirrors.aliyun.com/pypi/simple/ {packageName}

Q: 版本冲突

  • 在更新或安装包时,可能会遇到版本冲突的问题。

可以通过指定版本号来避免这些问题
例如pip install package==1.0.0

Q: 权限问题

  • 在某些情况下,安装包时可能会遇到权限问题。

方法1:可以使用--user选项在用户目录中安装包:

pip install --user {packageName}

方法2:可能需要使用sudo命令来获取管理员权限,特别是在LinuxmacOS系统中。

Q:Python安装第三方库时出现Requirement already satisfied

用户尝试在两个不同的Python环境中安装pytz库,一个环境已经安装了2022.1版本,另一个是2022.7版本。
然后,使用pip install --target命令将pytz安装到指定路径,并提示目标目录已存在,可以选择--upgrade参数替换。
此外,pip版本过旧,推荐升级到23.1.2版本。

  • 问题描述
C:\Users\111111>pip install pytz
Requirement already satisfied: pytz in d:\python3.8.5\lib\site-packages (2022.1)
WARNING: You are using pip version 20.2.4; however, version 23.1.2 is available.
You should consider upgrading via the 'd:\python3.8.5\python3.8.5.exe -m pip install --upgrade pip' command.

C:\Users\111111>python -m pip install pytz
Requirement already satisfied: pytz in d:\anaconda\lib\site-packages (2022.7)

C:\Users\111111>pip install --target=d:\anaconda\lib\site-packages
ERROR: You must give at least one requirement to install (see "pip help install")
WARNING: You are using pip version 20.2.4; however, version 23.1.2 is available.
You should consider upgrading via the 'd:\python3.8.5\python3.8.5.exe -m pip install --upgrade pip' command.
  • 解决方法: pip install --target=路径 包名
C:\Users\111111>pip install --target=d:\anaconda\lib\site-packages pytz
Collecting pytz
  Downloading pytz-2023.3-py2.py3-none-any.whl (502 kB)
     |████████████████████████████████| 502 kB 819 kB/s
Installing collected packages: pytz
Successfully installed pytz-2023.3
WARNING: Target directory d:\anaconda\lib\site-packages\pytz already exists. Specify --upgrade to force replacement.
WARNING: You are using pip version 20.2.4; however, version 23.1.2 is available.
You should consider upgrading via the 'd:\python3.8.5\python3.8.5.exe -m pip install --upgrade pip' command.
  • 参考文献

Q:Windows 应用商店 的 Python & pip 常用命令

  • 默认安装路径(python/pip)
C:\Users\xxx\AppData\Local\Microsoft\WindowsApps\python.exe
C:\Users\xxx\AppData\Local\Microsoft\WindowsApps\python3.exe
C:\Users\xxx\AppData\Local\Microsoft\WindowsApps\python3.12.exe

C:\Users\xxx\AppData\Local\Microsoft\WindowsApps\pythonw.exe
C:\Users\xxx\AppData\Local\Microsoft\WindowsApps\pythonw3.exe
C:\Users\xxx\AppData\Local\Microsoft\WindowsApps\pythonw3.12.exe

C:\Users\xxx\AppData\Local\Microsoft\WindowsApps\pip.exe
C:\Users\xxx\AppData\Local\Microsoft\WindowsApps\pip3.exe
C:\Users\xxx\AppData\Local\Microsoft\WindowsApps\pip3.12.exe
  • pip 升级
C:\Users\xxx> C:\Users\xxx\AppData\Local\Microsoft\WindowsApps\PythonSoftwareFoundation.Python.3.12_qbz5n2kfra8p0\python.exe -m pip install --upgrade pip

Defaulting to user installation because normal site-packages is not writeable
Requirement already satisfied: pip in c:\program files\windowsapps\pythonsoftwarefoundation.python.3.12_3.12.2800.0_x64__qbz5n2kfra8p0\lib\site-packages (25.0.1)
Collecting pip
  Downloading pip-25.1.1-py3-none-any.whl.metadata (3.6 kB)
Downloading pip-25.1.1-py3-none-any.whl (1.8 MB)
   ---------------------------------------- 1.8/1.8 MB 18.5 kB/s eta 0:00:00
Installing collected packages: pip
  WARNING: The scripts pip.exe, pip3.12.exe and pip3.exe are installed in 'C:\Users\xxx\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.12_qbz5n2kfra8p0\LocalCache\local-packages\Python312\Scripts' which is not on PATH.
  Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.
Successfully installed pip-25.1.1

Q:查看Python安装路径

# 导入sys模块
import sys

# 打印Python路径
print(sys.path)

Q: python 安装 pip 时,报Could not fetch URL https://pypi.org/simple/xxx/: There was a problem confirming the ssl certificate: HTTPSConnectionPool(host='pypi.org', port=443): Max retries exceeded with url: /simple/xxx/ (Caused by SSLError(SSLEOFError(8, 'EOF occurred in violation of protocol (_ssl.c:997)'))) - skipping?

  • 问题描述

在 Ubuntu Linux 22 操作系统中,基于 python 和 安装脚本 get-pip.py时,报错:Could not fetch URL https://pypi.org/simple/xxx/: There was a problem confirming the ssl certificate: HTTPSConnectionPool(host='pypi.org', port=443): Max retries exceeded with url: /simple/xxx/ (Caused by SSLError(SSLEOFError(8, 'EOF occurred in violation of protocol (_ssl.c:997)'))) - skipping

curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
# curl https://bootstrap.pypa.io/get-pip.py -o /opt/get-pip.py
 
python get-pip.py
  • 推荐文献
pip install xxx-package -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com
pip install xxx-package -i http://pypi.doubanio.com/simple/ --trusted-host pypi.doubanio.com

python -m pip install pip==20.2.4 -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com
python -m pip install pip==20.2.4 -i http://pypi.doubanio.com/simple/ --trusted-host pypi.doubanio.com

X 参考文献

posted @ 2025-01-03 00:32  千千寰宇  阅读(658)  评论(0)    收藏  举报