news 2026/8/22 16:03:15

Python进阶教程:11_pip 包管理工具 —— 新手完全指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Python进阶教程:11_pip 包管理工具 —— 新手完全指南

一、什么是 pip?

1.1 一句话定义

pip(Pip Installs Packages)是 Python 的官方包管理工具,用来安装、升级、卸载第三方库。

1.2 生活比喻

  • pip= 手机上的"应用商店"
  • PyPI(Python Package Index)= 应用商店里的"所有应用"
  • pip install flask= 在应用商店搜索"Flask"并点击"安装"
  • pip uninstall flask= 长按应用图标点"卸载"
  • pip list= 查看"已安装的应用列表"
  • requirements.txt= 你的"应用收藏清单"

1.3 pip 和 PyPI 的关系

┌─────────────────────────────────────────────────────────────┐ │ │ │ 你的电脑 互联网 │ │ ┌──────────┐ ┌──────────────────┐ │ │ │ pip │ ──请求──→ │ PyPI 服务器 │ │ │ │ (客户端) │ ←──下载── │ pypi.org │ │ │ └──────────┘ │ │ │ │ │ │ 50万+ 个包 │ │ │ ↓ │ flask, django, │ │ │ ┌──────────┐ │ numpy, pandas... │ │ │ │ 安装到 │ └──────────────────┘ │ │ │ site-packages │ │ │ └──────────┘ │ │ │ └─────────────────────────────────────────────────────────────┘

1.4 检查 pip 是否已安装

# 检查 pip 版本 pip --version # 输出:pip 24.0 from /usr/lib/python3/dist-packages/pip (python 3.12) # 或者 pip3 --version # 或者通过 Python 模块方式 python3 -m pip --version # 如果没有安装 pip: # Ubuntu/Debian: sudo apt install python3-pip # CentOS/RHEL: sudo yum install python3-pip # macOS: python3 -m ensurepip --upgrade # 通用方法: curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py python3 get-pip.py

📌推荐:始终用python3 -m pip而不是直接pip,这样可以确保用的是正确的 Python 版本。


二、安装包(pip install)

2.1 最基本的安装

# 安装一个包 pip install flask # 输出: # Collecting flask # Downloading flask-3.0.0-py3-none-any.whl (101 kB) # Collecting Werkzeug>=3.0.0 # Downloading werkzeug-3.0.1-py3-none-any.whl (226 kB) # Collecting Jinja2>=3.1.2 # Downloading jinja2-3.1.2-py3-none-any.whl (133 kB) # ... # Successfully installed flask-3.0.0 jinja2-3.1.2 werkzeug-3.0.1 ...

📌 安装 flask 时,pip 会自动安装它依赖的其他包(如 Werkzeug、Jinja2 等)。

2.2 安装指定版本

# 安装精确版本 pip install flask==3.0.0 # 安装最低版本(>=) pip install "flask>=2.0" # 安装版本范围 pip install "flask>=2.0,<3.0" # 安装最新版本(默认行为) pip install flask # 安装最新预发布版本(alpha/beta/rc) pip install --pre flask # ⚠️ 注意:在 bash/zsh 中,> < 是特殊字符,需要加引号! # pip install flask>=2.0 ← 错误!bash 会重定向 # pip install "flask>=2.0" ← 正确!

2.3 版本说明符完整列表

说明符含义示例
==精确版本flask==3.0.0
>=大于等于flask>=2.0
<=小于等于flask<=3.0
>大于flask>2.0
<小于flask<4.0
!=不等于flask!=2.5.0
~=兼容版本flask~=3.0(等同于 >=3.0, <4.0)
===任意版本匹配flask===3.0.0(极少用)
# ~= 的详细说明: pip install "flask~=3.0.0" # >=3.0.0, <3.1.0(只允许补丁版本变化) pip install "flask~=3.0" # >=3.0, <4.0(允许次版本变化)

2.4 一次安装多个包

# 空格分隔 pip install flask requests numpy pandas # 从 requirements.txt 安装(最常用!) pip install -r requirements.txt # 从多个文件安装 pip install -r requirements.txt -r requirements-dev.txt

2.5 requirements.txt 文件格式

# requirements.txt —— 项目依赖清单 # 以 # 开头的是注释 # 精确版本(推荐用于生产环境) flask==3.0.0 requests==2.31.0 numpy==1.26.2 # 版本范围(推荐用于库开发) pandas>=2.0,<3.0 sqlalchemy~=2.0 # 最低版本 django>=4.2 # 任意最新版 pytest # 带 extras(额外功能) requests[security,socks] # 从 Git 安装 # git+https://github.com/user/repo.git@main # 从本地路径安装 # ./my_package/ # 包含另一个 requirements 文件 # -r requirements-base.txt
# 生成 requirements.txt(把当前环境所有包导出) pip freeze > requirements.txt # 在新环境中恢复所有依赖 pip install -r requirements.txt

2.6 安装到用户目录(不需要管理员权限)

# --user 参数:安装到用户目录(~/.local/lib/python3.x/site-packages/) pip install --user flask # 适用场景: # - 没有 sudo/root 权限 # - 不想污染系统 Python 环境 # - 多用户共享服务器 # 查看用户安装路径 python3 -m site --user-site # 输出:/home/user/.local/lib/python3.12/site-packages

2.7 从不同来源安装

# ============ 从 PyPI 安装(默认) ============ pip install flask # ============ 从 Git 仓库安装 ============ pip install git+https://github.com/pallets/flask.git # 指定分支 pip install git+https://github.com/pallets/flask.git@main # 指定 tag pip install git+https://github.com/pallets/flask.git@3.0.0 # 指定 commit pip install git+https://github.com/pallets/flask.git@a1b2c3d # ============ 从本地目录安装 ============ pip install ./my_package/ # 以"可编辑模式"安装(开发时用,修改代码立即生效) pip install -e ./my_package/ # ============ 从本地 .whl 或 .tar.gz 文件安装 ============ pip install ./downloads/flask-3.0.0-py3-none-any.whl pip install ./downloads/flask-3.0.0.tar.gz # ============ 从 URL 安装 ============ pip install https://example.com/packages/flask-3.0.0-py3-none-any.whl # ============ 从私有 PyPI 服务器安装 ============ pip install flask --index-url https://pypi.mycompany.com/simple/

2.8 常用安装选项

# 不安装依赖(只装包本身) pip install --no-deps flask # 不缓存(每次都重新下载) pip install --no-cache-dir flask # 升级安装(如果已存在旧版本) pip install --upgrade flask pip install -U flask # 简写 # 安静模式(减少输出) pip install -q flask # 详细模式(调试用) pip install -v flask pip install -vv flask # 更详细 # 指定安装目录 pip install --target=/path/to/dir flask # 指定 Python 版本(多版本环境) python3.10 -m pip install flask python3.12 -m pip install flask # 指定代理 pip install flask --proxy http://127.0.0.1:7890 # 指定超时时间 pip install flask --timeout 60 # 重试次数 pip install flask --retries 5

三、卸载包(pip uninstall)

3.1 基本卸载

# 卸载一个包 pip uninstall flask # 会提示确认: # Found existing installation: Flask 3.0.0 # Uninstalling Flask-3.0.0: # Would remove: # /usr/lib/python3/dist-packages/flask/ # /usr/lib/python3/dist-packages/flask-3.0.0.dist-info/ # Proceed (Y/n)? y # Successfully uninstalled Flask-3.0.0 # 跳过确认(自动 yes) pip uninstall -y flask # 一次卸载多个 pip uninstall -y flask requests numpy

3.2 从文件批量卸载

# 从 requirements.txt 卸载所有列出的包 pip uninstall -y -r requirements.txt

3.3 注意事项

# ⚠️ pip uninstall 不会卸载依赖包! # 例如:flask 依赖 werkzeug # 卸载 flask 后,werkzeug 仍然保留 # 如果想彻底清理,需要手动卸载依赖 pip uninstall -y flask werkzeug jinja2 itsdangerous click markupsafe # 或者用 pip-autoremove(第三方工具) pip install pip-autoremove pip-autoremove flask -y # 卸载 flask 及其不再被其他包使用的依赖

四、升级包(pip install --upgrade)

4.1 升级单个包

# 升级到最新版 pip install --upgrade flask pip install -U flask # 简写 # 升级 pip 自身 pip install --upgrade pip python3 -m pip install --upgrade pip # 更安全的写法 # 升级到指定版本 pip install flask==3.1.0

4.2 批量升级

# 升级 requirements.txt 中的所有包 pip install --upgrade -r requirements.txt # 升级所有已安装的包(谨慎使用!) pip list --outdated --format=freeze | grep -v '^\-e' | cut -d = -f 1 | xargs -n1 pip install -U # 更安全的方式:逐个升级 pip list --outdated # 查看哪些包有新版本,然后决定升级哪些

4.3 查看可升级的包

# 列出所有有新版本可用的包 pip list --outdated # 输出示例: # Package Version Latest Type # ---------- ------- ------ ----- # flask 3.0.0 3.1.0 wheel # requests 2.31.0 2.32.0 wheel # numpy 1.26.2 2.0.0 wheel

五、查看包信息

5.1 列出已安装的包

# 列出所有已安装的包 pip list # 输出示例: # Package Version # --------------- ------- # Flask 3.0.0 # Jinja2 3.1.2 # numpy 1.26.2 # pandas 2.1.4 # pip 24.0 # requests 2.31.0 # setuptools 69.0.2 # Werkzeug 3.0.1 # 以 freeze 格式输出(可直接用于 requirements.txt) pip list --format=freeze # flask==3.0.0 # Jinja2==3.1.2 # numpy==1.26.2 # 以 JSON 格式输出 pip list --format=json # 只显示过时的包 pip list --outdated # 只显示用户安装的包(排除系统包) pip list --user # 排除某些包 pip list --exclude pip --exclude setuptools # 本地安装的包(非 PyPI) pip list --local

5.2 查看某个包的详细信息

# pip show 查看包的详细信息 pip show flask # 输出: # Name: Flask # Version: 3.0.0 # Summary: A simple framework for building complex web applications. # Home-page: https://palletsprojects.com/p/flask/ # Author: Armin Ronacher # Author-email: armin.ronacher@active-4.com # License: BSD-3-Clause # Location: /home/user/.local/lib/python3.12/site-packages # Requires: Werkzeug, Jinja2, itsdangerous, click, blinker # Required-by: Flask-SQLAlchemy, Flask-Login # 字段解释: # Name: 包名 # Version: 当前版本 # Summary: 简介 # Home-page: 官网 # Location: 安装路径 # Requires: 这个包依赖哪些包 # Required-by: 哪些包依赖了这个包 # 查看多个包 pip show flask requests numpy # 显示所有文件列表 pip show -f flask # 会额外列出安装的所有文件路径

5.3 查看包的依赖关系

# 查看某个包依赖了什么 pip show flask | grep Requires # Requires: Werkzeug, Jinja2, itsdangerous, click, blinker # 查看谁依赖了某个包 pip show jinja2 | grep Required-by # Required-by: Flask # 更直观的依赖树(需要安装 pipdeptree) pip install pipdeptree pipdeptree # 输出示例: # Flask==3.0.0 # - blinker [required: >=1.6.2, installed: 1.7.0] # - click [required: >=8.1.3, installed: 8.1.7] # - itsdangerous [required: >=2.1.2, installed: 2.1.2] # - Jinja2 [required: >=3.1.2, installed: 3.1.2] # - MarkupSafe [required: >=2.0, installed: 2.1.3] # - Werkzeug [required: >=3.0.0, installed: 3.0.1] # - MarkupSafe [required: >=2.1.1, installed: 2.1.3] # 只看某个包的依赖树 pipdeptree -p flask # 反向依赖(谁依赖了这个包) pipdeptree -r -p jinja2

六、搜索和查找包

6.1 在命令行搜索

# ⚠️ pip search 已被禁用!(PyPI 的 XMLRPC API 已关闭) # pip search flask ← 不再可用 # 替代方案1:直接去网站搜索 # https://pypi.org/search/?q=flask # 替代方案2:用 pip index(pip 21.2+) pip index versions flask # 输出: # flask (3.1.0) # Available versions: 3.1.0, 3.0.3, 3.0.2, 3.0.1, 3.0.0, 2.3.3, ... # 替代方案3:第三方工具 pip install pip-search pip_search flask

6.2 查看某个包的所有可用版本

# 方法1:pip index versions(pip 21.2+) pip index versions requests # 方法2:故意安装一个不存在的版本,pip 会列出所有版本 pip install flask==99999 # 错误信息中会列出所有可用版本: # ERROR: Could not find a version that satisfies the requirement flask==99999 # (from versions: 0.1, 0.2, ..., 3.0.0, 3.0.1, 3.0.2, 3.0.3, 3.1.0)

七、pip freeze —— 导出依赖

7.1 基本用法

# 导出当前环境所有包(requirements.txt 格式) pip freeze # 输出: # blinker==1.7.0 # click==8.1.7 # Flask==3.0.0 # itsdangerous==2.1.2 # Jinja2==3.1.2 # MarkupSafe==2.1.3 # Werkzeug==3.0.1 # 保存到文件 pip freeze > requirements.txt # 排除某些包 pip freeze --exclude pip --exclude setuptools > requirements.txt # 只导出用户安装的包 pip freeze --user > requirements.txt # 只导出本地安装的包 pip freeze --local > requirements.txt # 以 requirements.txt 格式(和 freeze 一样,但更明确) pip list --format=freeze > requirements.txt

7.2 freeze vs list 的区别

# pip freeze:输出 "包名==版本" 格式(可直接用于 pip install -r) pip freeze # Flask==3.0.0 # pip list:输出表格格式(人类可读) pip list # Package Version # Flask 3.0.0 # 实际用途: # freeze → 生成 requirements.txt(给机器用) # list → 查看已装了什么(给人看)

7.3 更好的依赖管理工具

# pip freeze 的问题:会列出所有包(包括间接依赖) # 更好的方案:pipreqs(只列出项目实际 import 的包) pip install pipreqs # 扫描项目目录,生成 requirements.txt pipreqs /path/to/project # 只包含项目代码中实际 import 的包 # 比 pip freeze 更精确

八、pip cache —— 缓存管理

8.1 查看缓存

# 查看缓存信息 pip cache info # 输出: # Package index page cache location: /home/user/.cache/pip # Package index page cache size: 125.3 MB # Number of HTTP files: 1234 # Locally built wheels location: /home/user/.cache/pip/wheels # Locally built wheels size: 45.6 MB # Number of locally built wheels: 56 # 列出缓存中的包 pip cache list # 列出特定包的缓存 pip cache list flask

8.2 清理缓存

# 删除特定包的缓存 pip cache remove flask # 删除所有缓存 pip cache purge # 安装时不使用缓存 pip install --no-cache-dir flask

8.3 缓存目录位置

# Linux: ~/.cache/pip # macOS: ~/Library/Caches/pip # Windows: %LOCALAPPDATA%\pip\Cache # 查看具体路径 pip cache dir

九、虚拟环境与 pip

9.1 为什么需要虚拟环境?

❌ 没有虚拟环境的问题: 项目A 需要 flask==2.0 项目B 需要 flask==3.0 → 冲突!只能装一个版本 系统 Python 被装了一堆包 → 混乱、难以管理
✅ 有虚拟环境: 项目A/venv/ → flask==2.0(独立环境) 项目B/venv/ → flask==3.0(独立环境) → 互不干扰!

9.2 创建和使用虚拟环境

# ============ 创建虚拟环境 ============ python3 -m venv myenv # 目录结构: # myenv/ # ├── bin/ # 可执行文件(python, pip, activate) # │ ├── python # │ ├── pip # │ └── activate # ├── lib/ # 安装的包 # │ └── python3.12/ # │ └── site-packages/ # └── pyvenv.cfg # 配置文件 # ============ 激活虚拟环境 ============ # Linux/macOS: source myenv/bin/activate # Windows CMD: myenv\Scripts\activate.bat # Windows PowerShell: myenv\Scripts\Activate.ps1 # 激活后,命令行前面会出现环境名: (myenv) user@computer:~$ # ============ 在虚拟环境中使用 pip ============ (myenv) pip install flask # 安装到虚拟环境 (myenv) pip list # 只看虚拟环境中的包 (myenv) pip freeze > requirements.txt # ============ 退出虚拟环境 ============ (myenv) deactivate user@computer:~$ # 前缀消失了

9.3 完整的虚拟环境工作流

# 1. 创建项目 mkdir my_project && cd my_project # 2. 创建虚拟环境 python3 -m venv venv # 3. 激活 source venv/bin/activate # 4. 升级 pip pip install --upgrade pip # 5. 安装依赖 pip install flask requests sqlalchemy # 6. 开发... # 7. 导出依赖 pip freeze > requirements.txt # 8. 提交到 Git(注意:不要提交 venv 目录!) echo "venv/" >> .gitignore git add . git commit -m "Initial commit" # === 另一台电脑/另一个人 === # 9. 克隆项目 git clone https://github.com/user/my_project.git cd my_project # 10. 创建虚拟环境 python3 -m venv venv source venv/bin/activate # 11. 安装依赖(一键恢复) pip install -r requirements.txt # 12. 运行项目 python app.py

9.4 虚拟环境中的 pip 指向

# 激活虚拟环境后: which pip # /home/user/my_project/venv/bin/pip(指向虚拟环境) which python # /home/user/my_project/venv/bin/python(指向虚拟环境) # 未激活时: which pip # /usr/bin/pip(指向系统) # 安全做法:始终用 python -m pip python -m pip install flask # 确保用当前 python 对应的 pip

十、pip 配置文件

10.1 配置文件位置

# Linux: # 全局:/etc/pip.conf # 用户:~/.config/pip/pip.conf 或 ~/.pip/pip.conf # macOS: # 用户:~/Library/Application Support/pip/pip.conf # Windows: # 全局:C:\ProgramData\pip\pip.ini # 用户:%APPDATA%\pip\pip.ini # 查看当前生效的配置 pip config list pip config debug # 显示所有配置文件路径

10.2 常用配置

# ~/.config/pip/pip.conf(Linux/macOS) # 或 %APPDATA%\pip\pip.ini(Windows) [global] # 使用国内镜像源(加速下载) index-url = https://pypi.tuna.tsinghua.edu.cn/simple # 备选: # index-url = https://mirrors.aliyun.com/pypi/simple/ # index-url = https://pypi.doubanio.com/simple/ # 信任的主机(避免 SSL 警告) trusted-host = pypi.tuna.tsinghua.edu.cn # 超时时间 timeout = 60 # 重试次数 retries = 5 [install] # 默认安装到用户目录 # user = true # 不使用缓存 # no-cache-dir = true [list] # 默认输出格式 format = columns

10.3 使用 pip config 命令管理配置

# 设置全局镜像源 pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple # 设置信任主机 pip config set global.trusted-host pypi.tuna.tsinghua.edu.cn # 查看配置 pip config list # 删除配置 pip config unset global.index-url # 编辑配置文件 pip config edit

10.4 临时使用镜像源

# 命令行指定(不修改配置文件) pip install flask -i https://pypi.tuna.tsinghua.edu.cn/simple # 信任主机 pip install flask -i https://pypi.tuna.tsinghua.edu.cn/simple --trusted-host pypi.tuna.tsinghua.edu.cn

10.5 国内常用镜像源

镜像地址
清华大学https://pypi.tuna.tsinghua.edu.cn/simple
阿里云https://mirrors.aliyun.com/pypi/simple/
豆瓣https://pypi.doubanio.com/simple/
中科大https://pypi.mirrors.ustc.edu.cn/simple/
华为云https://repo.huaweicloud.com/repository/pypi/simple

十一、pip download —— 只下载不安装

# 下载包(不安装),保存到指定目录 pip download flask -d ./packages/ # 下载指定版本 pip download flask==3.0.0 -d ./packages/ # 下载包及其所有依赖 pip download flask -d ./packages/ # 只下载源码包(.tar.gz) pip download --no-binary :all: flask -d ./packages/ # 只下载 wheel 包(.whl) pip download --only-binary :all: flask -d ./packages/ # 指定平台下载(交叉下载) pip download --platform manylinux2014_x86_64 --python-version 312 --only-binary :all: numpy -d ./packages/ # 实际应用:离线安装 # 在有网的机器上下载 pip download -r requirements.txt -d ./offline_packages/ # 把 offline_packages/ 拷贝到无网机器,然后: pip install --no-index --find-links=./offline_packages/ -r requirements.txt

十二、pip wheel —— 构建 wheel 包

# 什么是 wheel? # .whl 文件是 Python 的"预编译"包格式,安装更快(不需要编译) # 为某个包构建 wheel pip wheel flask -w ./wheels/ # 为 requirements.txt 中的所有包构建 wheel pip wheel -r requirements.txt -w ./wheels/ # 从 wheel 文件安装 pip install ./wheels/flask-3.0.0-py3-none-any.whl # wheel 文件名解析: # flask-3.0.0-py3-none-any.whl # │ │ │ │ │ # 包名 版本 Python ABI 平台 # 版本 标签 标签 # py3 = Python 3 # none = 不依赖特定 ABI # any = 任何平台

十三、pip check —— 检查依赖冲突

# 检查已安装包之间是否有依赖冲突 pip check # 没有冲突时: # No broken requirements found. # 有冲突时: # flask 3.0.0 requires Werkzeug>=3.0.0, but you have Werkzeug 2.3.0 which is incompatible. # requests 2.31.0 requires urllib3<3,>=1.21.1, but you have urllib3 2.1.0 which is incompatible. # 解决冲突: pip install "werkzeug>=3.0.0" pip install "urllib3<3,>=1.21.1"

十四、pip 的高级用法

14.1 安装带 extras 的包

# 某些包有可选功能(extras) # 例如 requests 有 security 和 socks 两个 extras # 安装带安全功能的 requests pip install "requests[security]" # 安装多个 extras pip install "requests[security,socks]" # 另一个例子:pandas pip install "pandas[excel,sql]" # 安装 Excel 和 SQL 支持 # 查看某个包有哪些 extras pip show requests # 或者去 PyPI 网站查看

14.2 从 Git 安装特定版本

# 从 GitHub 安装 pip install git+https://github.com/pallets/flask.git # 指定分支 pip install git+https://github.com/pallets/flask.git@main # 指定 tag(版本号) pip install git+https://github.com/pallets/flask.git@3.0.0 # 指定 commit hash pip install git+https://github.com/pallets/flask.git@abc123def # 安装子目录中的包 pip install "git+https://github.com/user/repo.git#subdirectory=package_dir" # 在 requirements.txt 中: # git+https://github.com/pallets/flask.git@3.0.0#egg=flask

14.3 可编辑安装(开发模式)

# -e 或 --editable:可编辑安装 # 适用场景:你在开发一个包,想边修改边测试 # 假设你的项目结构: # my_package/ # ├── setup.py(或 pyproject.toml) # ├── my_package/ # │ ├── __init__.py # │ └── core.py # └── tests/ # 可编辑安装 cd my_package/ pip install -e . # 现在修改 my_package/core.py 后,不需要重新安装 # 其他项目 import my_package 时,直接读取你的源码 # 对比普通安装: pip install . # 复制代码到 site-packages(修改源码不生效) pip install -e . # 创建链接到源码目录(修改源码立即生效)

14.4 约束文件(constraints)

# constraints 文件:限制版本范围,但不主动安装 # 和 requirements.txt 的区别: # requirements.txt = "我要装这些包" # constraints.txt = "如果装这些包,版本不能超过这个" # constraints.txt flask<3.0 numpy>=1.20,<2.0 requests==2.31.0 # 使用约束文件 pip install -c constraints.txt flask numpy requests # pip 会安装这些包,但版本受 constraints.txt 限制 # 实际场景: # 团队规定所有项目必须用 flask<3.0 # 每个项目的 requirements.txt 可以不同 # 但都受 constraints.txt 约束

14.5 多 Python 版本管理

# 如果系统有多个 Python 版本 python3.10 -m pip install flask # 装到 Python 3.10 python3.11 -m pip install flask # 装到 Python 3.11 python3.12 -m pip install flask # 装到 Python 3.12 # 查看各版本的 pip python3.10 -m pip --version python3.11 -m pip --version python3.12 -m pip --version # ⚠️ 不要直接用 pip,因为不知道它对应哪个 Python # 始终用 pythonX.Y -m pip

十五、常见问题排查

15.1 权限错误(Permission Denied)

# 错误: # ERROR: Could not install packages due to an OSError: [Errno 13] Permission denied # 解决方案1:使用 --user(推荐) pip install --user flask # 解决方案2:使用虚拟环境(最推荐) python3 -m venv venv source venv/bin/activate pip install flask # 解决方案3:使用 sudo(不推荐!) sudo pip install flask # ⚠️ 可能破坏系统 Python # 解决方案4:修复权限 sudo chown -R $USER ~/.local/lib/python3.12/site-packages/

15.2 网络超时

# 错误: # WARNING: Retrying after connection broken by 'ReadTimeoutError' # 解决1:增加超时时间 pip install flask --timeout 120 # 解决2:使用国内镜像 pip install flask -i https://pypi.tuna.tsinghua.edu.cn/simple # 解决3:设置代理 pip install flask --proxy http://127.0.0.1:7890 # 解决4:永久配置镜像源 pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple

15.3 依赖冲突

# 错误: # ERROR: pip's dependency resolver does not currently take into account # all the packages that are installed. # 或: # ERROR: Cannot install flask==2.0 and werkzeug==3.0 because... # 解决1:检查冲突 pip check # 解决2:让 pip 自动解决 pip install flask==2.0 werkzeug==2.0 # 手动指定兼容版本 # 解决3:使用虚拟环境(隔离项目) python3 -m venv venv source venv/bin/activate pip install -r requirements.txt # 解决4:使用更现代的工具 pip install pip-tools # 或 pip install poetry

15.4 pip 版本太旧

# 警告: # WARNING: You are using pip version 21.0; however, version 24.0 is available. # 升级 pip python3 -m pip install --upgrade pip # 如果升级失败(权限问题) python3 -m pip install --upgrade pip --user # 如果还是失败 curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py python3 get-pip.py --user

15.5 找不到包(No matching distribution)

# 错误: # ERROR: No matching distribution found for some-package # 可能原因1:包名拼写错误 pip install flsk # ❌ 拼错了 pip install flask # ✅ # 可能原因2:Python 版本不兼容 # 某些包只支持特定 Python 版本 python3 --version # 检查你的版本 # 去 PyPI 网站查看包的兼容版本 # 可能原因3:平台不兼容 # 某些包只有 Linux/macOS/Windows 版本 # 可能原因4:镜像源没有同步 # 换回官方源试试 pip install some-package -i https://pypi.org/simple/

15.6 卸载后 import 仍然成功

# 原因:可能装在了多个位置 # 检查包的安装位置 pip show flask | grep Location # 检查 Python 的搜索路径 python3 -c "import sys; print('\n'.join(sys.path))" # 检查是否有多个 pip which -a pip which -a pip3 # 确保用同一个 Python 和 pip python3 -m pip uninstall flask python3 -c "import flask" # 应该报 ModuleNotFoundError

15.7 SSL 证书错误

# 错误: # SSL: CERTIFICATE_VERIFY_FAILED # 临时解决(不推荐用于生产) pip install flask --trusted-host pypi.org --trusted-host files.pythonhosted.org # macOS 永久解决 /Applications/Python\ 3.12/Install\ Certificates.command # 或者安装证书 pip install certifi

十六、pip 与其他包管理工具对比

工具特点适用场景
pip官方、简单、通用大多数项目
pipenvpip + 虚拟环境 + 锁文件应用开发
poetry依赖管理 + 打包 + 发布库开发、复杂项目
conda科学计算、非Python依赖数据科学、机器学习
uv极快(Rust编写)追求速度
pip-toolspip 的增强(锁定依赖)团队协作
# pipenv 示例 pip install pipenv pipenv install flask # 创建虚拟环境 + 安装 pipenv shell # 进入虚拟环境 pipenv lock # 生成 Pipfile.lock # poetry 示例 pip install poetry poetry init # 初始化项目 poetry add flask # 添加依赖 poetry install # 安装所有依赖 poetry shell # 进入虚拟环境 # uv 示例(2024年新工具,极快) pip install uv uv pip install flask # 比 pip 快 10-100 倍 uv venv # 创建虚拟环境

十七、最佳实践总结

17.1 项目依赖管理流程

# ✅ 推荐的项目结构: my_project/ ├── venv/ # 虚拟环境(不提交到Git) ├── src/ # 源码 ├── tests/ # 测试 ├── requirements.txt # 生产依赖 ├── requirements-dev.txt # 开发依赖 ├── .gitignore # 包含 venv/ └── README.md # ✅ .gitignore 内容: # venv/ # __pycache__/ # *.pyc # .env # ✅ requirements.txt(生产): # flask==3.0.0 # requests==2.31.0 # sqlalchemy==2.0.23 # ✅ requirements-dev.txt(开发): # -r requirements.txt # pytest==7.4.3 # black==23.11.0 # flake8==6.1.0

17.2 日常命令速查

# 创建环境 python3 -m venv venv && source venv/bin/activate # 安装包 pip install flask pip install "flask>=3.0,<4.0" pip install -r requirements.txt # 查看 pip list pip show flask pip list --outdated # 升级 pip install -U flask pip install --upgrade pip # 卸载 pip uninstall flask pip uninstall -y -r requirements.txt # 导出 pip freeze > requirements.txt # 检查 pip check # 缓存 pip cache purge # 帮助 pip --help pip install --help

17.3 安全建议

# 1. 永远不要在系统 Python 中 pip install(用虚拟环境) # 2. 永远不要 sudo pip install # 3. 生产环境锁定版本(flask==3.0.0 而不是 flask) # 4. 定期更新依赖(pip list --outdated) # 5. 使用 pip check 检查冲突 # 6. 不要安装不信任的包 # 7. 使用 HTTPS 源(默认就是)

十八、pip 命令完整列表

pip --help # 输出: # Usage: # pip <command> [options] # # Commands: # install 安装包 # download 下载包(不安装) # uninstall 卸载包 # freeze 导出已安装包(requirements格式) # list 列出已安装包 # show 显示包详细信息 # check 检查依赖冲突 # config 管理配置 # search 搜索包(已禁用) # cache 管理缓存 # index 查看包索引信息 # wheel 构建 wheel 包 # hash 计算包哈希 # completion 生成 shell 自动补全脚本 # debug 显示调试信息 # help 显示帮助 # 查看某个命令的帮助 pip install --help pip list --help
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/22 15:59:00

Git配置和SourceTree使用教程详解

标题一、Git的工作流程标题二、Git的安装 Git的安装可以参考 标题三、Git的配置 1、Git安装确认 按照《Git官方client及小乌龟Git安装手册》安装好git后&#xff0c;返回桌面点鼠标右键出现Git GUI Here 和Git Bash Here 证明git安装成功&#xff0c;如图1。Git GUI Here &…

作者头像 李华
网站建设 2026/8/22 15:53:15

OpenCV4.8 GPU版本编译指南:从CUDA配置到加速实战

1. 项目概述&#xff1a;为什么需要自己编译带GPU的OpenCV&#xff1f;如果你在深度学习、实时图像处理或者高性能计算领域摸爬滚打过一阵子&#xff0c;大概率遇到过这样的场景&#xff1a;用Python的cv2读个图、画个框还行&#xff0c;但一旦上到视频分析、稠密光流或者复杂的…

作者头像 李华
网站建设 2026/8/22 15:46:55

25 硬件工程师笔面试高频考点真题解析——UART/RS485总线

目录 2.4 UART/RS485总线 2.4.1 简述UART总线 2.4.2 简述RS485总线 2.4.3 简述UART总线的数据帧 2.4.4 UART总线长线干扰如何解决 2.4.5 简述UART总线和RS485总线的异同 2.4.6 UART总线闲置RX浮空会有什么问题?如何处理? 2.4.7 什么原因会导致UART/RS485总线全乱码?…

作者头像 李华