开发者

Python包管理工具pip的使用完全指南

目录
  • 一、pip安装与配置
    • 1.1 获取pip
    • 1.2 升级pip
    • 1.3 配置国内镜像源
  • 二、pip核心功能详解
    • 2.1 包安装与管理
    • 2.2 依赖管理
    • 2.3 环境管理
  • 三、pip高级技巧
    • 3.1 选择性安装
    • 3.2 缓存管理
    • 3.3 构建与安装本地包
    • 3.4 查询包的历史版本
    • 3.5 代码中安装
  • 四、pip疑难解答
    • 4.1 常见错误处理
    • 4.2 依赖解析策略
    • 4.3 性能优化
  • 五、pip生态系统
    • 5.1 相关工具
    • 5.2 与虚拟环境集成

一、pip安装与配置

1.1 获取pip

现代python版本(3.4+)已内置pip,可通过以下命令验证:

python -m pip --version
# 或
pip --http://www.devze.comversion

若未安装,可通过以下方式获取:

linux/MACOS:

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

Windows:

(Invoke-WebRequest https://bootstrap.pypa.io/get-pip.py).Content | python -

1.2 升级pip

保持pip最新版本至关重要:

python -m pip install --upgrade pip

Python包管理工具pip的使用完全指南

1.3 配置国内镜像源

临时使用

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple some-package

永久配置

pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple

常用国内镜像源:

  • 清华大学源 https://pypi.tuna.tsinghua.edu.cn/simple
  • 豆瓣源 https://pypi.douban.com/simple/​
  • 中国科学技术大学 https://pypi.mirrors.ustc.edu.cn/simple
  • 阿里云 http://mirrors.aliyun.com/pypi/simple/​
  • 中国科技大学 https://pypi.mirrors.ustc.edu.cn/simple/​

二、pip核心功能详解

2.1 包安装与管理

基础安装

pip install requests

指定版本

pip install django==4.2
pip install "flask>=2.0,<3.0"

升级包

pip install --upgrade pandas

卸载包

pip uninstall numpy

2.2 依赖管理

最佳实践:

  • 使用虚拟环境
  • 使用uv等现代化管理工具,开发时就将依赖写入

常规解决方案:

pip freeze

pip freeze > requirements.txt

但是这样做有一个问题,那就是pip freeze会把当前环境下的所有pip安装的包都导出到requirements.txt中,但是我们很难保证当前的环境只适用于着一个项目,也就是会引入很多不需要的包,为了解决这个问题,我们需要一个其他的工具,就是pipreqs。

pipreqs

安装pipreqs

pip install pipreqs

如果是Windows系统,会报编码错误(UnicodeDecodeError: 'gbk' codec can't decode byte 0xa8 in position 24: illegal multibyte sequence)

使用时,指定编码格式

pipreqs . --encoding=utf8 --force

定位到项目根路径,执行

pipreqs ./

之后,requirements.txt将被生成至./路径下

从文件安装

pip install -r requirements.txt

高级依赖解析

pip install --no-deps package-name  # 仅安装指定包,不安装依赖
pip install --pre package-name     # 包含预发布版本

2.3 环境管理

查看已安装包

pip list # 查询已经安装的所有包
pip list | findStr requests # 查询包含requests的包

查看包详情

pip show requests

输出

D:\>pip show requests

Name: requests

Version: 2.31.0

Summary: Python HTTP for Humans.

Home-page: https://requests.readthedocs.io

Author: Kenneth Reitz

Author-email: me@kennethreitz.org

License: Apache 2.0

Location: C:\Users\{{user}}\miniconda3\Lib\site-packages

Requires: certifi, charset-normalizer, idna, urllib3

Required-by: conda, conda_package_streaming, DownloadKit, DrissionPage, google-api-core, html2image, huggingface-hub, requests-file, tiktokjavascripten, tldextract, webdriver-manager

http://www.devze.com查过时包

pip list --outdated

Python包管理工具pip的使用完全指南

该命令会去查询最新版本和本地库做比较,执行时间较长

三、pip高级技巧

3.1 选择性安装

安装可选依赖

pip install "package[extra1,extra2]"
# 例如
pip install "requests[security]"

以Qwen-Agent库安装为例

Python包管理工具pip的使用完全指南

平台特定依赖

pip install --platform win_amd64 package-name  # 64位Windows
pip install --platform win32 package-name     # 32位Windows
# 强制安装Linux版本的包(适用于WSL或特殊场景)
pip install --platform manylinux2014_x86_64 --only-binary=:all: package-name
# 安装macOS版本的包(通常不推荐,仅用于特殊测试)
pip install --platform macosx_10_15_x86_64 --only-binary=:all: package-name

特别提醒

  • 多数情况下用户不需要手动指定平台,pip会自动选择正确的版本
  • 此技巧主要用于
    • 为其他平台预先下载依赖(如docker镜像准备)
    • 解决某些特殊包的兼容性问题
    • 企业内网部署时预先缓存依赖

3.2 缓存管理

3.2.1 查看缓存位置

pip cache dir
# 清理特定包的缓存
pip cache remove package-name

Python包管理工具pip的使用完全指南

使用 pip config list 查看配置

缓存位置可能被自定义配置覆盖,可以检查 pip php的全局配置:

pip config list

Python包管理工具pip的使用完全指南

3.2.2 设置缓存位置

pip config set global.cache-dir "D:\data\pip\cache"

查看缓存

pip cache list

Python包管理工具pip的使用完全指南

清理缓存

pip cache purge

Python包管理工具pip的使用完全指南

再次执行

Python包管理工具pip的使用完全指南

禁用缓存

pip install --no-cache-dir package-name

3.3 构建与安装本地包

从本地安装

pip install /path/to/package

从源码安装(可编辑模式)

pip install -e /path/to/package  # 适合开发模式

构建分发包

pip install build
python -m build

3.4 查询包的历史版本

场景:在一些时候通过pip install xxx​ 安装第三方库的时候默认情况下安装最新版本,由于是最新版本有个稳定性就不得不考虑其中,所以部分场景会存在一些 bug 这就要求我们安装历史版本:

如果你是想单纯找到历史版本,下面这条命令就可以搞定:

pip index versions xxxx

例如:

Python包管理工具pip的使用完全指南

3.5 代码中安装

3.5.1 通过pip库安装

import pip

def install_package(package_name):
    try:
        pip.main(['install', package_name, '-i', 'https://pypi.douban.com/simple/'])
        print(f"Successfully installed {package_name}")
    except Exception as e:
        print(f"Failed to install {package_name}: {str(e)}")

# 示例:安装requests库
install_package('requests')

这段代码会导入pip库,并使用pip.main()函数来安装指定的库。

运行结果

WARNING: pip is being invoked by an old script wrapper. This will fail in a future version of pip.

Please see https://github.com/pypa/pip/issues/5599 for advice on fixing the underlying issue.

To avoid this problem you can invoke Python with '-m pip' instead of running pip directly.

Looking in indexes: https://pypi.douban.com/simple/

Requirement already http://www.devze.comsatisfied: requests in d:\dev\anaconda_data\envs\auto\lib\site-packages (2.28.2)

Requirement already satisfied: idna<4,>=2.5 in d:\dev\anaconda_data\envs\auto\lib\site-packages (from requests) (2.10)

Requirement already satisfied: charset-normalizer<4,>=2 in d:\dev\anaconda_data\envs\auto\lib\site-packages (from requests) (3.0.1)

Requirement already satisfied: certifi>=2017.4.17 in d:\dev\anaconda_data\envs\auto\lib\site-packages (from requests) (2022.12.7)

Requirement already satisfied: urllib3<1.27,>=1.21.1 in d:\dev\anaconda_data\envs\auto\lib\site-packages (from requests) (1.26.14)

Successfully installed requests

尽量避免使用该方式,未来版本可能会失效

3.5.2 通过subprocess库安装

import subprocess

def install_package(package_name):
    try:
        subprocess.check_call(['pip', 'install', package_name])
        print(f"Successfully installed {package_name}")
    except subprocess.CalledProcessError:
        print(f"Failed to install {package_name}")

# 示例:安装requests库
install_package('requests')

这段代码会调用系统的pip命令来安装指定的库。

四、pip疑难解答

4.1 常见错误处理

权限问题

pip install --user package-name  # 用户级安装

版本冲突

pip install --ignore-installed package-name

SSL错误

pip install --trusted-host pypi.org --trusted-host files.pythonhosted.org package-name

4.2 依赖解析策略

新旧解析器对比

  • 旧解析器(2020年前):简单但可能不一致
  • 新解析器(默认):更严格但更可靠

强制使用旧解析器

pip install --use-deprecated=legacy-resolver package-name

4.3 性能优化

并行安装

pip install -U pip  # 确保pip最新版
pip install --use-feature=fast-deps package-name

二进制缓存

pip install --cache-dir /path/to/cache package-name

五、pip生态系统

5.1 相关工具

pip-tools:高级依赖管理

pip install pip-tools
pip-compile requirements.in  # 生成精确的requirements.txt

pipdeptree:依赖树可视化

pip install pipdeptree
pipdeptree

Python包管理工具pip的使用完全指南

pipx:全局Python应用安装

pip install pipx
pipx install black

5.2 与虚拟环境集成

venv(Python内置):

python -m venv myenv
source myenv/bin/activate  # Linux/macOS
myenv\Scripts\activate     # Windows
pip install package-name

virtualenv(更强大):

pip install virtualenv
virtualenv myenv

 以上就是Python包管理工具pip的使用完全指南的详细内容,更多关于Python pip的资料请关注编程客栈(www.devze.com)其它相关文章!

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新开发

开发排行榜