在 Python 项目开发中,当你编写了一个自己的包(包含 setup.pypyproject.toml),并希望将其安装到当前的虚拟环境以便调用时,通常会在项目根目录执行安装命令。

最常见的两个命令是 pip install .pip install -e .。虽然它们看起来只有两个字符的差异,但底层的工作机制和适用场景却完全不同。本文将带你理清这两者的关系。

这里的 . 代表什么?

在 Linux 和终端语境中,.(点)代表当前目录。因此这两个命令的意思都是“将当前目录下的 Python 项目作为一个包安装到 Python 环境中”。前提是当前目录必须存在构建文件(如 setup.pypyproject.toml)。


1. pip install .:标准安装(“复制粘贴”模式)

这是最标准的打包与安装流程。

  • 工作机制: 当你执行这个命令时,pip 会读取项目的配置文件,将你的源代码打包,并将其物理复制到当前 Python 环境的 site-packages 目录下。
  • 核心影响: 安装完成后,你的虚拟环境使用的是 site-packages 里的那份副本。此时,如果你在 IDE 中修改了工程目录下的源代码,环境中的包并不会发生任何改变。你必须重新执行一次 pip install .,才能让修改生效。
  • 适用场景: 生产环境与部署部署。 当你的代码已经开发完毕,准备打包发布到服务器,或者提供给最终用户使用时,使用标准安装可以保证代码的静态和稳定。

2. pip install -e .:可编辑安装(“快捷方式”模式)

这里的 -e--editable(可编辑)的缩写,也被称为“开发模式”(develop mode)。

  • 工作机制:不会将你的代码复制到 site-packages 目录中。相反,它会在 site-packages 目录下创建一个“链接”(通常是通过 .egg-link 文件或特殊的路径配置文件),这个链接直接指向你的源代码所在的工作目录。
  • 核心影响: 因为环境直接通过引用指向了你的工作目录,所以你在本地编辑器中对源码做的任何修改(只要不涉及新增、删除核心文件或改变入口点配置),保存后都会立即在运行环境中生效,无需重新安装。
  • 适用场景: 日常开发与 Debug。 在开发自己的开源库或企业内部工具时,代码处于频繁变动的状态,可编辑安装省去了无数次重复打包和安装的麻烦,极大地提高了开发效率。

总结与对比

为了更直观地理解,我们可以通过下表进行对比:

特性 pip install . (标准安装) pip install -e . (可编辑安装)
底层机制 将源码文件复制到 site-packages site-packages 创建指向源码的链接
源码修改 修改后无效,必须重新安装 保存修改后立即生效,直接可跑
项目体积 占用额外的磁盘空间 (复制了一份) 几乎不占额外空间 (只有一个链接文件)
核心场景 生产环境、最终部署、测试最终包 本地开发、代码调试、频繁修改阶段

一句话最佳实践:
自己在电脑上写代码、调 Bug 时,永远用 pip install -e .;把项目放上服务器正式运行,或者打包给别人用时,用 pip install .

Logo

这里是“一人公司”的成长家园。我们提供从产品曝光、技术变现到法律财税的全栈内容,并连接云服务、办公空间等稀缺资源,助你专注创造,无忧运营。

更多推荐