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

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

这两种安装方式的区别其实非常关键,特别是在开发 Python 包时。


1. 普通安装(pip install .

  • 行为

    • pip 会读取当前目录下的 pyproject.tomlsetup.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.pysite-packages/mypkg/core.py
    • 你修改源码文件,导入时不会更新。
  • pip install -e . 安装后:

    • site-packages/ 里只有一个指向你源码路径的引用。
    • 你修改源码文件,再次导入时立刻生效。

4. 适用场景

  • pip install . → 用于发布/部署(生产环境、CI/CD、Docker)。
  • pip install -e . → 用于开发调试(本地写代码,快速迭代)。

⚠️ 一个常见误区:
-e 不是安装更“轻量”,而是让环境直接“追踪”源码路径,所以适合开发,但不适合生产。


Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐