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

177

当我需要处理我的个人项目之一时,我只需要像平常一样克隆代码库(git clone <url>),编辑所需内容,运行测试,更新setup.py中的版本号,提交、推送,构建软件包并上传到PyPI。

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


当您想要使用特定的标签或分支而不是主分支中的内容时,可以这样做。这种情况的使用案例可能是由于应用程序无法处理您拉取的“更新”代码中的某些破坏性更改。或者,您想暂时使用“冻结”的版本,因为您已经验证了您的堆栈明确适用于该特定标签。 - idjaw
我在Stack Overflow上有一个关于查找目录路径的问题,使用"pip install -e ."解决了这个问题。以下链接可能会有所帮助。 https://stackoverflow.com/questions/56461650/pathlib-path-resolves-installed-path-directory-of-package-instead-of-source-code - Basavaraj Lamani
这回答了你的问题吗?使用pip install时,-e、--editable选项何时有用? - LudvigH
3个回答

148

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

例如:

您使用Django为众多客户构建网站,并且还开发了一个内部Django应用程序,称为locations,您可以在许多项目中重复使用它,并将其提供给pip并进行版本控制。

当您在项目上工作时,像往常一样安装要求,这会将locations安装到站点包中。

但是您很快发现locations需要进行一些改进。

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

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

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

这将使用一个符号链接将site-packages目录中的locations覆盖,这意味着其中的任何代码更改都将自动反映出来-只需重新加载页面(只要您使用开发服务器)。

符号链接查看目录中的当前文件,这意味着您可以切换分支以查看更改或尝试其他内容等。

另一种选择是创建一个新版本,将其推送到pip,并希望您没有遗漏任何内容。 如果您有许多这样的内部应用程序,则这很快变得不可行。


/path/to/locations/repo 是用于 pip install -e /path/to/locations/repo 安装的 setup.py 的路径吗? - Charlie Parker
@CharlieParker 这是指包含 setup.py 文件的目录路径,该目录应设置为一个包 https://setuptools.readthedocs.io/en/latest/setuptools.html。 - andyhasit

98

对于时间紧张的人:

如果你使用-e标志(例如pip install -e mynumpy)安装你的项目并在代码中使用它(例如from mynumpy import some_function),当你对some_function做出任何更改时,你应该能够在不重新安装的情况下使用更新后的函数。


50

pip install -e 是使用pip处理setuptools依赖项的方法。 通常需要先安装依赖项:

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

现在所有的依赖项都应该已经安装好了。

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


除了setuptools(egg)之外,还有一个wheel系统用于Python安装。 这两个系统都承诺不进行构建和编译。


/path/to/locations/repopip install -e /path/to/locations/reposetup.py 的路径吗?你的例子中的 . 代表什么? - Charlie Parker
@CharlieParker 我相信它是从setup.py所在的同一目录中运行的。至少我是这样使用的。在我的Makefile中有一行叫做“local”,它运行的命令是 pip install -e .,并且假设在带有setup.py的目录中。 - james-see
在整个互联网上搜索了一番,只在这里找到了pip install -e .[dev]的含义。谢谢 /|\ - Vinit Khandelwal

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接