`pip install -e`的用例是什么?

jpm*_*los 27 python packaging pip

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

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

如果这有帮助,这是我目前打包并发送给PyPI的两个宠物项目,但从未使用过pip install -e.一个是纯Python,另一个是Django包.

如何通过使用来改善项目的工作流程或结构pip install -e

Aer*_*rin 100

对于那些没有时间的人:

-e如果您使用标志(例如)安装项目pip install -e mynumpy并在代码中使用它(例如from mynumpy import some_function),那么当您对 进行任何更改时some_function,您应该能够使用更新的功能而无需重新安装它。


and*_*sit 60

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

例子:

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

当您处理项目时,您可以像往常一样安装需求,这会将位置安装到站点包中。

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

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

只需进入您的项目并输入:

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

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

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

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


jpm*_*los 21

pip install -e .如果您想运行包,python package.py并且从该文件导入项目的其他模块,则使用实际上非常有用.该命令使它们可以找到!

它的作用是:

  • 安装site-packages/PackageName.egg-link文件
  • 添加路径 site-packages/easy-install.pth
  • 可选择安装CLI目标 <venv>/bin

似乎前两个中的任何一个都足够了,后者在开发命令行实用程序时很方便.


pro*_*sti 19

pip install -e是如何通过pip. 您通常要做的是安装依赖项:

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

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

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


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