「EP」04 `pip install -e .`?`python -m pip`?你们究竟是什么?

Greetings!

嗨!这里是阿乎的博客!(> ▽ <) /~

平时装Python项目的依赖基本都是无脑:pip install -r requirements.txt。但在探索一些 GitHub 仓库时,常会遇到几个很像的东西:python -m pip install ...pip install -e .

它们究竟是什么?和普通的 pip install 又有什么区别?🤔让我们一起来看看吧!

1 pip install -r requirements.txt

首先我们重新看看最为熟悉的:

pip install -r requirements.txt

在一个需要依赖的Python项目中,通常会有一个requirements.txt文件,里面列出了项目所需的所有依赖包及其版本。

my_project/
├── requirements.txt
├── main.py
└── ...

那么pip install -r requirements.txt的作用就是:读取requirements.txt文件中的依赖列表,并安装这些依赖包到当前环境中。

2 python -m pip install ...

python -m pip install ...指令相较于我们熟悉的pip install ...,多了一个python -m

其含意也很简单,即使用指定的 Python 解释器来运行 pip 模块,并安装依赖包

如果你不熟悉Python解释器,可以参考本系列的这一节: 「EP」01 Python是如何运行的?(重制)

由于许多用户通常会使用多个Python版本(如我既用Python 3.8又用Python 3.12),因此在没有使用虚拟环境的情况下,直接使用pip install ...可能会导致依赖包被安装到错误的Python版本中。

那么python -m作为一个前缀,允许用户去指定要将包安装到哪个Python解释器的环境下。

由于目前有conda、uv甚至Python原生的venv一系列虚拟环境工具,且在使用它们的时候通常会“activate”到对应环境中,因此这个命令的使用频率相对较低。

例子

比如说,我在Windows端安装了Python 3.8和Python 3.12,并且它们的安装路径分别是:

  • Python 3.8: C:\Python38\python.exe
  • Python 3.12: C:\Python312\python.exe

那么如果我想要将requests包安装到Python 3.8的环境中,我可以使用以下命令:

C:\Python38\python.exe -m pip install requests

3. pip install -e .

还有一些情况,在使用pip安装依赖前后,还会要求执行:

pip install -e .

-e指的是“editable”,即“可编辑的”安装方式。

.代表当前目录,表示将当前项目以“可编辑”的方式安装到当前环境中。

这条命令常在开发一个Python包时使用。它告诉pip将不要把我当前这个项目复制到 site-packages 里,而是创建一个指向我项目文件夹的链接。

site-packages 即 Python 环境中存放第三方包的目录。

这样的话,当你在开发过程中修改了项目代码时,不需要重新安装包,修改会立即生效。(要是每次做了一小个修改,测试的时候还等重新输指令、等待运行的话,那也太痛苦了😅)

4. 总结

OK,总之以上就是这三个命令的区别和作用。简单来说,大部分情况下pip install ...就够了,不过认识其他长得相似的指令也是一件很有意思的事情捏。

Reference


「EP」04 `pip install -e .`?`python -m pip`?你们究竟是什么?
https://siriusahu.github.io.git/2025/10/06/EP-03-Special-commands/
Author
Sirius Ahu
Posted on
October 6, 2025
Licensed under