当前位置: 首页 > news >正文

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

Content

  • 1️⃣ `pip install -e .`
      • 工作原理
      • 常见使用场景
  • 2️⃣ `pip install .`
  • 3️⃣ 两者核心区别
  • 4️⃣ 举个最直观例子
      • 使用
      • 使用
  • 5️⃣ 实际开发中怎么用
  • 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 .

然后:

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 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 . → 正式安装(复制代码)
http://www.jsqmd.com/news/498078/

相关文章:

  • QZSS增强服务深度对比:L6E与L6D在东亚地区的定位性能差异(含基准站数据解析)
  • PyArmor介绍
  • Vue+Three.js打造工业管道三维动态可视化系统
  • 小米智能家居集成开发指南:从协作到质量保障的全面实践
  • Flink CDC实战:5分钟搞定MySQL到PostgreSQL的实时数据同步(附避坑指南)
  • AcousticSense AI基础教程:Mel Spectrogram参数(n_mels/n_fft/hop_length)详解
  • 零基础上手SoVITS歌声音色转换:高效实践与避坑指南
  • 手把手教你用GLM-4-9B-Chat-1M镜像:从部署到对话,完整实战教程
  • 【技术指南】LLM请求处理难题?自定义Transformer三场景实战:从认证注入到协议转换的全链路优化
  • 地震数据处理实战:动校正如何提升叠加效果(附Python代码示例)
  • Python海龟绘图进阶:5种让烟花效果更逼真的调试技巧
  • Zynq UltraScale+ DDR4接口设计避坑指南:从引脚规划到实际配置
  • 6大高效修复方案:biliTickerBuy抢票脚本Windows运行异常深度排查
  • Coze智能体开发实战:5分钟搞定你的第一个AI助手(附提示词模板)
  • 保姆级教程:Halcon多模板匹配从配置到部署(避坑指南+性能优化)
  • SCI论文写作全流程:从选题到录用,我是如何用AI工具辅助完成第一篇计算机领域1区论文的
  • RD-Agent:AI驱动研发的效能倍增器与技术民主化引擎
  • GiD二次开发入门:如何用Tcl/Tk自定义你的数值模拟前处理界面
  • Qwen3-0.6B-FP8模型在STM32F103C8T6最小系统板项目中的辅助开发实践
  • 3D Face HRN一文通:从ModelScope模型加载到Gradio接口封装全流程
  • PS软件工作流增强:将万象熔炉·丹青幻境作为Photoshop的智能填充插件
  • 多模态AI的下一个里程碑?Qwen3-VL技术深度评测
  • XXL-JOB 与 MySQL 8.0 的完美搭配:Docker 部署中的性能调优指南
  • 5个步骤掌握Milkdown插件扩展:从安装到定制的低代码配置指南
  • GME-Qwen2-VL-2B-Instruct开源模型实战:图文匹配服务集成至低代码平台
  • MATLAB数值积分实战:从integral到integral2的5个常见错误与修正方法
  • BlueCms漏洞挖掘实战:从黑盒渗透到代码审计全解析
  • 2026年Ai建站指南:普通人如何通过自然语言搭建网站
  • Linux下3种快速定位动态库路径的方法(ldconfig/locate/rpm实战指南)
  • MTK相机启动流程trace分析