“ pip install-e”的用例是什么?

当我需要处理一个我喜欢的项目时,我只需要像往常一样克隆存储库(git clone <url>)、编辑我需要的东西、运行测试、更新 setup.py版本、提交、推送、构建包并将它们上传到 PyPI。

使用 pip install -e的好处是什么? 我应该使用它吗? 它将如何改善我的工作流程?

92993 次浏览

pip install -e 是通过 pip处理 setuptools 依赖性的方式。 您通常要做的是安装依赖项:

  • git clone URL
  • cd project
  • 运行 pip install -e .pip install -e .[dev] *

现在应该安装所有的依赖项。

* [ dev ]是来自 setup.py的需求组的名称


除了 setuptools (egg) ,还有一个 Python 安装的车轮系统。 这两个系统都基于不执行构建和编译的承诺。

在同时开发产品和依赖项时,我发现 pip install -e非常有用,我经常这样做。

例如:

您使用 Django 为许多客户端建立网站,并且还开发了一个称为 地点的内部 Django 应用程序,您可以在许多项目中重用它,因此您可以在 pip 上使用它并对其进行版本控制。

当您在一个项目中工作时,您像往常一样安装需求,它将 地点安装到站点包中。

但是您很快就会发现 地点可以做一些改进。

因此,您可以获取 地点存储库的副本并开始进行更改。当然,您需要在 Django 项目的上下文中测试这些更改。

简单地进入你的项目并输入:

pip install -e /path/to/locations/repo

这将覆盖站点包中的目录,包含到 地点存储库的符号链接,这意味着任何对代码的更改都将自动反映出来——只需重新加载页面(只要您使用开发服务器)。

符号链接查看目录中的当前文件,这意味着您可以切换分支以查看更改或尝试不同的事情等。.

另一种选择是创建一个新版本,将其推到 pip,并希望您没有忘记任何东西。如果你有很多这样的内部应用程序,这很快就会变得站不住脚。

对于那些没有时间的人:

如果你安装一个带有 -e标志的项目(例如 pip install -e mynumpy)并在代码中使用它(例如 from mynumpy import some_function) ,当你对 some_function做任何更改时,你应该能够使用更新后的功能而不需要重新安装它。