不推荐用 setup.py install,因它绕过 pip 依赖解析、易致冲突与卸载失败;现代标准是 pip install -e . 或 python -m build 后 pip install。

setup.py install 为什么现在不推荐用了
它会绕过 pip 的依赖解析和版本管理,直接把包文件复制到 site-packages,容易导致依赖冲突、卸载困难、无法追踪来源。现代 Python 生态默认要求包提供 pyproject.toml,setup.py 已被标记为 legacy(即使存在,也常只是兼容性空壳)。
常见错误现象:python setup.py install 成功但后续 import 失败;用 pip list 看不到该包;pip uninstall 报 “not found”。
- Python 3.12+ 默认禁用
setup.py执行(需加--legacy-setup-py才能运行) - 很多新项目根本没写
setup.py,只保留pyproject.toml - 即使有
setup.py,它可能只是调用setuptools.build_meta,实际构建逻辑在pyproject.toml里
想从源码装,应该用 pip install -e .
这是当前标准做法:在源码根目录(含 pyproject.toml 或 setup.py)下运行,以“可编辑模式”安装——代码改完立刻生效,且能被 pip list 和 pip uninstall 正确识别。
使用场景:调试包源码、贡献 PR、本地修改后测试。
- 必须确保当前目录下有
pyproject.toml(优先)或功能完整的setup.py - 执行前建议先升级
pip:pip install -U pip,避免旧版 pip 对 PEP 517 构建支持不全 - 如果报错
subprocess.CalledProcessError或No module named 'setuptools',先pip install setuptools wheel build
setup.py install 的几个典型坑
即使你坚持用它,也要清楚这些行为不是“安装”,而是“硬拷贝”:
SkillSub Pro - Python 题解与代码注释双功能技能功能概述SkillSub Pro - Python 题解与代码注释双功能技能是一项面向实际任务的技能,主要用于SkillSub Pro 是一个 Python 题解生成与代码注释的 双功能合体技能 ,专为学生、算法学习者和开发者设计;✅ 一个技能,两种用途 :;核心要点📝 题解模式 :输入题目/题号,自动生成完整 Python 题解(含详细注释、解题思路、复杂度分析);💬 注释模式 :输入 Python 代码,自动添加详细中。它将相关步骤、
-
setup.py install不读requirements.txt,不会自动装依赖(得手动pip install -r requirements.txt) - 它默认走
easy_install路径,生成.egg-info目录,而非标准的-info文件夹,导致工具链(如pip show、IDE 包索引)失效 - 多环境时容易误装到系统 Python 而非虚拟环境(检查
which python和python -m site输出的site-packages路径) - 若项目含 C 扩展(如
numpy、cryptography),setup.py install很可能因缺失编译器/头文件而静默失败或降级为纯 Python 模式(性能暴跌)
真要离线装源码,优先走 wheel 流程
比直接跑 setup.py 更可靠:先构建分发包,再安装。这能复用标准构建流程,规避环境差异问题。
操作步骤(在源码根目录):
- 装构建工具:
pip install build - 生成 wheel:
python -m build(输出在dist/下,如requests-2.31.0-py3-none-any.whl) - 离线安装:
pip install dist/xxx.whl(支持依赖自动解析,且可卸载)
注意:build 命令会读 pyproject.toml 中的 build-system 配置,比如指定 setuptools 或 poetry-core,比硬调 setup.py 更健壮。
复杂点在于:有些老项目没有 pyproject.toml,又没维护 setup.py 的构建逻辑——这时别强用 setup.py install,先看 GitHub issues 有没有人提过构建问题,或者换用 pip install git+https://... 让 pip 自己处理。
Python免费学习笔记(深入):立即使用
在学习笔记中,你将探索 Python 的核心概念和高级技巧!










