pip install -e . 是以可编辑模式安装当前目录的Python包,通过符号链接实现源码修改后立即生效,无需重新安装;要求项目含setup.py或合规pyproject.toml,与PyPI预发布版无关。

pip install -e . 是安装本地开发版 Python 包的标准方式,不是“下载 dev 版本的包”,而是把当前项目以可编辑模式装进环境里,方便边改代码边测试。
为什么 pip install -e . 不是“安装 dev 包”
很多人搜“pip 安装 dev 包”,其实是想本地调试自己写的包,或参与开源项目开发。但 PyPI 上并没有一类叫 “dev 包” 的东西——只有正式发布版(如 requests==2.31.0)和预发布版(如 requests==2.32.0rc1)。-e 模式跟版本号无关,只跟安装路径和构建方式有关。
- 它不从 PyPI 下载,而是直接链接到你磁盘上的源码目录
- 修改
.py文件后,import 就能立刻生效,不用重复pip install - 适用于你有
setup.py或pyproject.toml的项目根目录
pip install -e . 失败的常见原因
报错信息常含 Editable install is not supported 或 No module named 'setuptools',本质是构建系统不匹配:
- 项目只有
setup.py,但 pip 新版本默认禁用旧式setup.py develop - 缺少
pyproject.toml,或其中[build-system]配置不全 - 没装
setuptools或版本太低(setuptools<64会触发警告) - 当前目录下没有有效的构建配置文件(比如漏了
setup.py,也没pyproject.toml)
怎么让 pip install -e . 稳定通过
优先补 pyproject.toml,这是当前最兼容的做法:
[build-system] requires = ["setuptools>=64", "wheel"] build-backend = "setuptools.build_meta"
- 保存为项目根目录下的
pyproject.toml,内容就这三行 - 确保已安装
setuptools:运行pip install --upgrade setuptools - 再执行
pip install -e .,不再报 Legacy editable 警告 - 如果仍失败,临时加
--use-pep517:pip install -e . --use-pep517
注意:. 必须是包含构建配置的目录;如果项目用 poetry 或 flit,要按其规则写 pyproject.toml,不能硬套 setuptools 模板。
别把 -e 和 --pre 搞混
有人误以为 pip install --pre some-package 是装“dev 版”,其实 --pre 只是允许安装带 a、b、rc 后缀的预发布版(如 django==5.2a1),它仍是 PyPI 上发布的归档包,不是本地开发模式。
-
pip install -e git+https://github.com/xxx/repo.git才是远程开发版安装(需 repo 有合法构建配置) -
pip install --pre解决不了本地改代码实时生效的问题 - 二者用途完全不同:一个是链接源码,一个是放宽版本筛选
真正需要“开发时热更新”的人,99% 应该盯住 pyproject.toml + -e 这条路径,而不是折腾镜像源或降级 pip。


















