不推荐用 setup.py install,因它绕过 pip 依赖解析、易致冲突与卸载失败;现代标准是 pip install -e . 或 python -m build 后 pip install。
setup.py install 为什么现在不推荐用了
它会绕过 pip 的依赖解析和版本管理,直接把包文件复制到 site-packages,容易导致依赖冲突、卸载困难、无法追踪来源。现代 Python 生态默认要求包提供
,
已被标记为 legacy(即使存在,也常只是兼容性空壳)。
常见错误现象:
成功但后续
失败;用
看不到该包;
报 “not found”。
Python 3.12+ 默认禁用
执行(需加
才能运行)
很多新项目根本没写
,只保留
即使有
,它可能只是调用
,实际构建逻辑在
里
想从源码装,应该用 pip install -e .
这是当前标准做法:在源码根目录(含
或
)下运行,以“可编辑模式”安装——代码改完立刻生效,且能被
和
正确识别。
使用场景:调试包源码、贡献 PR、本地修改后测试。
立即学习
“
Python免费学习笔记(深入)
”;
必须确保当前目录下有
(优先)或功能完整的
执行前建议先升级
:
,避免旧版 pip 对 PEP 517 构建支持不全
如果报错
或
,先
setup.py install 的几个典型坑
即使你坚持用它,也要清楚这些行为不是“安装”,而是“硬拷贝”:
Python 3.14.3
微软官方的 Python 扩展,是 VS Code 安装量最高的扩展(209M+)。集成 IntelliSense(通过 Pylance)、调试(通过 Python Debugger)、代码检查、格式化、重构和单元测试等功能。支持 Jupyter Notebook、虚拟环境管理和多 Python 版本切换。
下载
不读
,不会自动装依赖(得手动
)
它默认走
路径,生成
目录,而非标准的
文件夹,导致工具链(如
、IDE 包索引)失效
多环境时容易误装到系统 Python 而非虚拟环境(检查
和
输出的
路径)
若项目含 C 扩展(如
、
),
很可能因缺失编译器/头文件而静默失败或降级为纯 Python 模式(性能暴跌)
真要离线装源码,优先走 wheel 流程
比直接跑
更可靠:先构建分发包,再安装。这能复用标准构建流程,规避环境差异问题。
操作步骤(在源码根目录):
装构建工具:
生成 wheel:
(输出在
下,如
)
离线安装:
(支持依赖自动解析,且可卸载)
注意:
命令会读
中的
配置,比如指定
或
,比硬调
更健壮。
复杂点在于:有些老项目没有
,又没维护
的构建逻辑——这时别强用
,先看 GitHub issues 有没有人提过构建问题,或者换用
让 pip 自己处理。
pyproject.tomlsetup.pypython setup.py installimportpip listpip uninstallsetup.py--legacy-setup-pysetup.pypyproject.tomlsetup.pysetuptools.build_metapyproject.tomlpyproject.tomlsetup.pypip listpip uninstallpyproject.tomlsetup.pypippip install -U pipsubprocess.CalledProcessErrorNo module named 'setuptools'pip install setuptools wheel buildsetup.py installrequirements.txtpip install -r requirements.txteasy_install.egg-info-infopip showwhich pythonpython -m sitesite-packagesnumpycryptographysetup.py installsetup.pypip install buildpython -m builddist/requests-2.31.0-py3-none-any.whlpip install dist/xxx.whlbuildpyproject.tomlbuild-systemsetuptoolspoetry-coresetup.pypyproject.tomlsetup.pysetup.py installpip install git+https://...