Content
- [1️⃣ `pip install -e .`](#1️⃣
pip install -e .) - [2️⃣ `pip install .`](#2️⃣
pip install .) - [3️⃣ 两者核心区别](#3️⃣ 两者核心区别)
- [4️⃣ 举个最直观例子](#4️⃣ 举个最直观例子)
- [5️⃣ 实际开发中怎么用](#5️⃣ 实际开发中怎么用)
- [6️⃣ 一个很多人不知道的小知识](#6️⃣ 一个很多人不知道的小知识)
这两个命令都是用来 安装当前目录中的 Python 项目 (通常包含 setup.py 或 pyproject.toml),但行为不同。
1️⃣ pip install -e .
含义:
-e表示 editable(可编辑模式).表示 当前目录
完整含义:
以 可编辑模式安装当前 Python 项目
工作原理
pip 不会复制代码到 site-packages ,而是创建一个 链接(link) 指向当前目录。
因此:
- 你修改源码
- 不需要重新安装
- Python 会 立即使用最新代码
常见使用场景
开发阶段:
例如开发一个库:
my_project/
│
├── mylib/
│ ├── __init__.py
│ └── model.py
│
└── setup.py
执行
pip install -e .
然后:
python
import mylib
如果你修改:
mylib/model.py
无需重新安装,修改立刻生效。
所以:
pip install -e .= 开发者模式安装
2️⃣ pip install .
含义:
正常安装当前项目
执行后:
-
pip 会
-
打包项目
-
复制到
site-packages/
-
例如:
/usr/lib/python3.x/site-packages/
此时:
- 代码 与当前目录脱离
- 修改源码 不会影响已安装版本
如果修改源码,需要重新安装:
pip install .
3️⃣ 两者核心区别
| 命令 | 安装方式 | 修改代码是否生效 | 用途 |
|---|---|---|---|
pip install -e . |
链接到源码 | ✅ 立即生效 | 开发 |
pip install . |
复制到site-packages | ❌ 不生效 | 发布/使用 |
4️⃣ 举个最直观例子
假设你开发一个包:
hello_pkg/
├── hello/
│ └── say.py
└── setup.py
使用
pip install -e .
然后:
python
from hello.say import hi
如果你改:
say.py
程序 立刻使用新代码。
使用
pip install .
然后改:
say.py
程序 不会改变,因为运行的是:
site-packages/hello/
5️⃣ 实际开发中怎么用
开发库时 100%用这个
pip install -e .
例如常见项目:
- ROS python packages
- PyTorch projects
- OpenAI projects
- Huggingface projects
6️⃣ 一个很多人不知道的小知识
pip install -e . 本质上做的是:
创建一个
site-packages/xxx.egg-link
文件,里面写着:
/path/to/your/project
Python 导入模块时就会跳转到源码目录。
✅ 一句话总结
pip install -e . → 开发模式安装(源码链接)
pip install . → 正式安装(复制代码)