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 与虚拟环境集成

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

    python -m pip --version
    # 或
    pip --version
    

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

    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 -
    

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

    python -m pip install --upgrade pip
    

    临时使用

    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 install requests
    

    指定版本

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

    升级包

    pip install --upgrade pandas
    

    卸载包

    pip uninstall numpy
    

    最佳实践:

    • 使用虚拟环境
    • 使用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     # 包含预发布版本
    

    查看已安装包

    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}}miniconda3Libsite-packages
    Requires: certifi, charset-normalizer, idna, urllib3
    Required-by: conda, conda_package_streaming, DownloadKit, DrissionPage, google-api-core, html2image, huggingface-hub, requests-file, tiktoken, tldextract, webdriver-manager

    检查过时包

    pip list --outdated
    

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

    安装可选依赖

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

    以Qwen-Agent库安装为例

    平台特定依赖

    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.1 查看缓存位置

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

    使用 pip config list 查看配置

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

    pip config list
    

    3.2.2 设置缓存位置

    pip config set global.cache-dir "D:datapipcache"
    

    查看缓存

    pip cache list
    

    清理缓存

    pip cache purge
    

    再次执行

    禁用缓存

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

    从本地安装

    pip install /path/to/package
    

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

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

    构建分发包

    pip install build
    python -m build
    

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

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

    pip index versions xxxx
    

    例如:

    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 satisfied: requests in d:devanaconda_dataenvsautolibsite-packages (2.28.2)
    Requirement already satisfied: idna<4,>=2.5 in d:devanaconda_dataenvsautolibsite-packages (from requests) (2.10)
    Requirement already satisfied: charset-normalizer<4,>=2 in d:devanaconda_dataenvsautolibsite-packages (from requests) (3.0.1)
    Requirement already satisfied: certifi>=2017.4.17 in d:devanaconda_dataenvsautolibsite-packages (from requests) (2022.12.7)
    Requirement already satisfied: urllib3<1.27,>=1.21.1 in d:devanaconda_dataenvsautolibsite-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 install --user package-name  # 用户级安装
    

    版本冲突

    pip install --ignore-installed package-name
    

    SSL错误

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

    新旧解析器对比

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

    强制使用旧解析器

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

    并行安装

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

    二进制缓存

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

    pip-tools:高级依赖管理

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

    pipdeptree:依赖树可视化

    pip install pipdeptree
    pipdeptree
    

    pipx:全局Python应用安装

    pip install pipx
    pipx install black
    

    venv(Python内置):

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

    virtualenv(更强大):

    pip install virtualenv
    virtualenv myenv
    

     以上就是Python包管理工具pip的使用完全指南的详细内容,更多关于Python pip的资料请关注风君子博客其它相关文章!

    您可能感兴趣的文章:

    • 10个技巧带你轻松掌握Python pip使用
    • Python多版本管理与pip升级的全面指南
    • Python 的 pip 命令常用操作和高级用法
    • Python包管理利器之pip命令的安装与使用入门指南
    • python中pip的使用方法详解
    • Python 管理依赖包工具pip, virtualenv详解

    站内搜索