当我需要处理一个我喜欢的项目时,我只需要像往常一样克隆存储库(git clone <url>)、编辑我需要的东西、运行测试、更新 setup.py版本、提交、推送、构建包并将它们上传到 PyPI。
git clone <url>
setup.py
使用 pip install -e的好处是什么? 我应该使用它吗? 它将如何改善我的工作流程?
pip install -e
pip install -e 是通过 pip处理 setuptools 依赖性的方式。 您通常要做的是安装依赖项:
pip
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做任何更改时,你应该能够使用更新后的功能而不需要重新安装它。
-e
pip install -e mynumpy
from mynumpy import some_function
some_function