尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

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

Python进阶教程:11_pip 包管理工具 —— 新手完全指南 一、什么是 pip1.1 一句话定义pipPip Installs Packages是 Python 的官方包管理工具用来安装、升级、卸载第三方库。1.2 生活比喻pip 手机上的应用商店PyPIPython 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 install2.1 最基本的安装# 安装一个包 pip install flask # 输出 # Collecting flask # Downloading flask-3.0.0-py3-none-any.whl (101 kB) # Collecting Werkzeug3.0.0 # Downloading werkzeug-3.0.1-py3-none-any.whl (226 kB) # Collecting Jinja23.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 flask3.0.0 # 安装最低版本 pip install flask2.0 # 安装版本范围 pip install flask2.0,3.0 # 安装最新版本默认行为 pip install flask # 安装最新预发布版本alpha/beta/rc pip install --pre flask # ⚠️ 注意在 bash/zsh 中 是特殊字符需要加引号 # pip install flask2.0 ← 错误bash 会重定向 # pip install flask2.0 ← 正确2.3 版本说明符完整列表说明符含义示例精确版本flask3.0.0大于等于flask2.0小于等于flask3.0大于flask2.0小于flask4.0!不等于flask!2.5.0~兼容版本flask~3.0等同于 3.0, 4.0任意版本匹配flask3.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.txt2.5 requirements.txt 文件格式# requirements.txt —— 项目依赖清单 # 以 # 开头的是注释 # 精确版本推荐用于生产环境 flask3.0.0 requests2.31.0 numpy1.26.2 # 版本范围推荐用于库开发 pandas2.0,3.0 sqlalchemy~2.0 # 最低版本 django4.2 # 任意最新版 pytest # 带 extras额外功能 requests[security,socks] # 从 Git 安装 # githttps://github.com/user/repo.gitmain # 从本地路径安装 # ./my_package/ # 包含另一个 requirements 文件 # -r requirements-base.txt# 生成 requirements.txt把当前环境所有包导出 pip freeze requirements.txt # 在新环境中恢复所有依赖 pip install -r requirements.txt2.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-packages2.7 从不同来源安装# 从 PyPI 安装默认 pip install flask # 从 Git 仓库安装 pip install githttps://github.com/pallets/flask.git # 指定分支 pip install githttps://github.com/pallets/flask.gitmain # 指定 tag pip install githttps://github.com/pallets/flask.git3.0.0 # 指定 commit pip install githttps://github.com/pallets/flask.gita1b2c3d # 从本地目录安装 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 uninstall3.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 numpy3.2 从文件批量卸载# 从 requirements.txt 卸载所有列出的包 pip uninstall -y -r requirements.txt3.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 --upgrade4.1 升级单个包# 升级到最新版 pip install --upgrade flask pip install -U flask # 简写 # 升级 pip 自身 pip install --upgrade pip python3 -m pip install --upgrade pip # 更安全的写法 # 升级到指定版本 pip install flask3.1.04.2 批量升级# 升级 requirements.txt 中的所有包 pip install --upgrade -r requirements.txt # 升级所有已安装的包谨慎使用 pip list --outdated --formatfreeze | 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 --formatfreeze # flask3.0.0 # Jinja23.1.2 # numpy1.26.2 # 以 JSON 格式输出 pip list --formatjson # 只显示过时的包 pip list --outdated # 只显示用户安装的包排除系统包 pip list --user # 排除某些包 pip list --exclude pip --exclude setuptools # 本地安装的包非 PyPI pip list --local5.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.ronacheractive-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 # 输出示例 # Flask3.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/?qflask # 替代方案2用 pip indexpip 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 flask6.2 查看某个包的所有可用版本# 方法1pip index versionspip 21.2 pip index versions requests # 方法2故意安装一个不存在的版本pip 会列出所有版本 pip install flask99999 # 错误信息中会列出所有可用版本 # ERROR: Could not find a version that satisfies the requirement flask99999 # (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 # 输出 # blinker1.7.0 # click8.1.7 # Flask3.0.0 # itsdangerous2.1.2 # Jinja23.1.2 # MarkupSafe2.1.3 # Werkzeug3.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 --formatfreeze requirements.txt7.2 freeze vs list 的区别# pip freeze输出 包名版本 格式可直接用于 pip install -r pip freeze # Flask3.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 flask8.2 清理缓存# 删除特定包的缓存 pip cache remove flask # 删除所有缓存 pip cache purge # 安装时不使用缓存 pip install --no-cache-dir flask8.3 缓存目录位置# Linux: ~/.cache/pip # macOS: ~/Library/Caches/pip # Windows: %LOCALAPPDATA%\pip\Cache # 查看具体路径 pip cache dir九、虚拟环境与 pip9.1 为什么需要虚拟环境❌ 没有虚拟环境的问题 项目A 需要 flask2.0 项目B 需要 flask3.0 → 冲突只能装一个版本 系统 Python 被装了一堆包 → 混乱、难以管理✅ 有虚拟环境 项目A/venv/ → flask2.0独立环境 项目B/venv/ → flask3.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) usercomputer:~$ # 在虚拟环境中使用 pip (myenv) pip install flask # 安装到虚拟环境 (myenv) pip list # 只看虚拟环境中的包 (myenv) pip freeze requirements.txt # 退出虚拟环境 (myenv) deactivate usercomputer:~$ # 前缀消失了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.py9.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.confLinux/macOS # 或 %APPDATA%\pip\pip.iniWindows [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 columns10.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 edit10.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.cn10.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 flask3.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 Werkzeug3.0.0, but you have Werkzeug 2.3.0 which is incompatible. # requests 2.31.0 requires urllib33,1.21.1, but you have urllib3 2.1.0 which is incompatible. # 解决冲突 pip install werkzeug3.0.0 pip install urllib33,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 githttps://github.com/pallets/flask.git # 指定分支 pip install githttps://github.com/pallets/flask.gitmain # 指定 tag版本号 pip install githttps://github.com/pallets/flask.git3.0.0 # 指定 commit hash pip install githttps://github.com/pallets/flask.gitabc123def # 安装子目录中的包 pip install githttps://github.com/user/repo.git#subdirectorypackage_dir # 在 requirements.txt 中 # githttps://github.com/pallets/flask.git3.0.0#eggflask14.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 flask3.0 numpy1.20,2.0 requests2.31.0 # 使用约束文件 pip install -c constraints.txt flask numpy requests # pip 会安装这些包但版本受 constraints.txt 限制 # 实际场景 # 团队规定所有项目必须用 flask3.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/simple15.3 依赖冲突# 错误 # ERROR: pips dependency resolver does not currently take into account # all the packages that are installed. # 或 # ERROR: Cannot install flask2.0 and werkzeug3.0 because... # 解决1检查冲突 pip check # 解决2让 pip 自动解决 pip install flask2.0 werkzeug2.0 # 手动指定兼容版本 # 解决3使用虚拟环境隔离项目 python3 -m venv venv source venv/bin/activate pip install -r requirements.txt # 解决4使用更现代的工具 pip install pip-tools # 或 pip install poetry15.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 --user15.5 找不到包No matching distribution# 错误 # ERROR: No matching distribution found for some-package # 可能原因1包名拼写错误 pip install flsk # ❌ 拼错了 pip install flask # ✅ # 可能原因2Python 版本不兼容 # 某些包只支持特定 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 # 应该报 ModuleNotFoundError15.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生产 # flask3.0.0 # requests2.31.0 # sqlalchemy2.0.23 # ✅ requirements-dev.txt开发 # -r requirements.txt # pytest7.4.3 # black23.11.0 # flake86.1.017.2 日常命令速查# 创建环境 python3 -m venv venv source venv/bin/activate # 安装包 pip install flask pip install flask3.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 --help17.3 安全建议# 1. 永远不要在系统 Python 中 pip install用虚拟环境 # 2. 永远不要 sudo pip install # 3. 生产环境锁定版本flask3.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
返回列表