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

‘pip install -e .‘ and ‘pip install .‘ Content1️⃣ pip install -e .工作原理常见使用场景2️⃣ pip install .3️⃣ 两者核心区别4️⃣ 举个最直观例子使用使用5️⃣ 实际开发中怎么用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 .然后importmylib如果你修改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 .然后fromhello.sayimporthi如果你改say.py程序立刻使用新代码。使用pip install .然后改say.py程序不会改变因为运行的是site-packages/hello/5️⃣ 实际开发中怎么用开发库时100%用这个pip install -e .例如常见项目ROS python packagesPyTorch projectsOpenAI projectsHuggingface projects6️⃣ 一个很多人不知道的小知识pip install -e .本质上做的是创建一个site-packages/xxx.egg-link文件里面写着/path/to/your/projectPython 导入模块时就会跳转到源码目录。✅一句话总结pip install -e . → 开发模式安装源码链接 pip install . → 正式安装复制代码