‘pip install -e .‘ and ‘pip install .‘

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.pypyproject.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 .     → 正式安装(复制代码)
相关推荐
請你喝杯Java4 小时前
Python 后端开发:从虚拟环境、pip、requirements.txt 到项目启动
开发语言·python·pip
Hello.Reader7 小时前
PySpark 安装保姆级教程pip、Conda、手动安装、Spark Connect 一次讲透(一)
python·spark·conda·pip
N盒10 小时前
【WhisperX+M2M100】快速视频转字幕工具
python·pip
查尔char4 天前
CentOS 7 编译安装 Python 3.10 并解决 SSL 问题
python·centos·ssl·pip·python3.11
@zulnger4 天前
数据采集的基本知识
python·pip
水淹萌龙5 天前
Agent配置MCP并通过uvx指定pip源
pip
烟锁池塘柳05 天前
【已解决】解决 ModuleNotFoundError: No module named ‘exceptions‘
python·pip
BubbleCodes5 天前
使用Conda和pip创建Python环境
python·conda·pip
GDAL7 天前
qpip 教程:把 Python 包安装、项目脚本和虚拟环境统一到一个命令里
python·pip·venv