当我需要处理我的个人项目之一时,我只需要像平常一样克隆代码库(git clone <url>
),编辑所需内容,运行测试,更新setup.py
中的版本号,提交、推送,构建软件包并上传到PyPI。
使用pip install -e
有什么优势?我应该使用它吗?如何改善我的工作流程?
当我需要处理我的个人项目之一时,我只需要像平常一样克隆代码库(git clone <url>
),编辑所需内容,运行测试,更新setup.py
中的版本号,提交、推送,构建软件包并上传到PyPI。
使用pip install -e
有什么优势?我应该使用它吗?如何改善我的工作流程?
我发现在同时开发产品和依赖项时,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对于时间紧张的人:
如果你使用-e
标志(例如pip install -e mynumpy
)安装你的项目并在代码中使用它(例如from mynumpy import some_function
),当你对some_function
做出任何更改时,你应该能够在不重新安装的情况下使用更新后的函数。
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/repo
是 pip install -e /path/to/locations/repo
中 setup.py
的路径吗?你的例子中的 .
代表什么? - Charlie Parkerpip install -e .
,并且假设在带有setup.py的目录中。 - james-see