【python】pip install -e . 和 不带-e的区别
·
【python】pip install -e . 和 不带-e的区别



这两种安装方式的区别其实非常关键,特别是在开发 Python 包时。
1. 普通安装(pip install .)
-
行为:
pip会读取当前目录下的pyproject.toml或setup.py,把项目打包(build)成一个 wheel。- 然后把 wheel 安装到当前环境的
site-packages/目录。 - 安装完成后,Python 运行时只会使用
site-packages里的副本。
-
效果:
- 之后即使你在源码目录里修改
.py文件,已安装的库不会变。 - 需要重新
pip install .才能更新。
- 之后即使你在源码目录里修改
2. 可编辑安装(pip install -e .)
-
行为:
pip会在site-packages/里创建一个“链接”(.pth文件或符号链接),指向你的源码目录。- 并且只在第一次时处理依赖(如
install_requires)。
-
效果:
- 你修改源码目录里的
.py文件,立刻会反映到 Python 运行时,不需要重新安装。 - 常用于开发调试:你边改代码边
import测试。 - 但如果你改了 依赖定义(
pyproject.toml/setup.py),需要重新pip install -e .。
- 你修改源码目录里的
3. 举例
假设你的包目录结构:
mypkg/
setup.py
mypkg/
__init__.py
core.py
-
用
pip install .安装后:- 系统会复制
mypkg/core.py到site-packages/mypkg/core.py。 - 你修改源码文件,导入时不会更新。
- 系统会复制
-
用
pip install -e .安装后:site-packages/里只有一个指向你源码路径的引用。- 你修改源码文件,再次导入时立刻生效。
4. 适用场景
pip install .→ 用于发布/部署(生产环境、CI/CD、Docker)。pip install -e .→ 用于开发调试(本地写代码,快速迭代)。
⚠️ 一个常见误区:-e 不是安装更“轻量”,而是让环境直接“追踪”源码路径,所以适合开发,但不适合生产。
更多推荐
所有评论(0)