当我需要处理我的一个宠物项目时,我只是像往常一样克隆存储库(git clone <url>
),编辑我需要的东西,运行测试,更新setup.py
版本,提交,推送,构建包并将它们上传到PyPI。
使用pip install -e
有什么好处?我应该使用它吗?它将如何改善我的工作流程?
如果这有帮助,这是我目前打包并发送给PyPI的两个宠物项目,但从未使用pip install -e
。一个是纯Python,另一个是Django包。
使用pip install -e
?
答案 0 :(得分:27)
在同时开发产品和依赖项时,我发现pip install -e
非常有用。
示例:
您使用Django为众多客户构建了网站,并且还开发了内部Django应用,称为 locations ,可在许多项目中重复使用,因此可以在pip上使用它并对其进行版本控制。 / p>
在处理项目时,您将照常安装需求,这会将位置安装到站点程序包中。
但是您很快就会发现位置可以带来一些改进。
因此,您获取了位置存储库的副本并开始进行更改。当然,您需要在Django项目的上下文中测试这些更改。
只需进入您的项目并输入:
pip install -e /path/to/locations/repo
这将使用指向 locations 存储库的符号链接覆盖站点包中的目录,这意味着对其中代码的任何更改都将自动反映-只需重新加载页面即可(只要您重新使用开发服务器)。
符号链接查看目录中的当前文件,这意味着您可以切换分支以查看更改或尝试其他操作等...
另一种选择是创建一个新版本,将其推送至点子,并希望您不要忘记任何东西。如果您有很多这样的内部应用程序,那么这种情况很快就变得难以为继。
答案 1 :(得分:16)
如果要使用pip install -e .
运行包并从该文件导入项目的其他模块,则使用python package.py
实际上非常有用。该命令使它们可以找到!
它的作用是:
site-packages/PackageName.egg-link
档案site-packages/easy-install.pth
<venv>/bin
似乎前两个中的任何一个都足够了,后者在开发命令行实用程序时很方便。
答案 2 :(得分:0)
pip install -e
是如何通过pip
处理setuptools依赖性的。
通常,您要做的是安装依赖项:
git clone URL
cd project
pip install -e .
或pip install -e .[dev]
* 现在应该安装所有依赖项。
* [dev]是setup.py
除了setuptools(例如鸡蛋)以外,还有python installation的滚轮系统。 这两个系统都基于不进行任何构建和编译的承诺。