-e, --editable 选项什么时候对 pip install 有用?

-e, --editable 选项什么时候对 pip install 有用?

-e--editable 选项什么时候对 pip install 有用?

对于某些项目,requirements.txt 中的最后一行是 -e . 。它具体做什么?

原文由 raitisd 发布,翻译遵循 CC BY-SA 4.0 许可协议


回答:

正如手册页所说:

 -e,--editable <path/url>

Install a project in editable mode (i.e. setuptools "develop mode") from a local project path or a VCS url.

所以当你试图在本地安装一个包时,你会使用它,最常见的情况是你在你的系统上开发它。它只会将包链接到原始位置,基本上意味着对原始包的任何更改都会直接反映在您的环境中。

一些掘金在 这里 和 这里 相同。

一个示例运行可以是:

 pip install -e .

要么

pip install -e ~/ultimate-utils/ultimate-utils-proj-src/

请注意,第二个是 setup.py 所在位置的完整路径。

原文由 Anshul Goyal 发布,翻译遵循 CC BY-SA 4.0 许可协议


回答:

在开发中使用 --editable 的具体例子

如果你像这样使用 这个测试包:

 cd ~

git clone https://github.com/cirosantilli/vcdvcd

cd vcdvcd

git checkout 5dd4205c37ed0244ecaf443d8106fadb2f9cfbb8

python -m pip install --editable . --user

它输出:

 Obtaining file:///home/ciro/bak/git/vcdvcd

Installing collected packages: vcdvcd

Attempting uninstall: vcdvcd

Found existing installation: vcdvcd 1.0.6

Can't uninstall 'vcdvcd'. No files were found to uninstall.

Running setup.py develop for vcdvcd

Successfully installed vcdvcd-1.0.6

Can't uninstall 'vcdvcd' 是正常的:它试图卸载任何现有的 vcdvcd 然后用以下步骤中生成的“类似符号链接的机制”替换它们,但失败了,因为没有以前的安装。

然后它生成一个文件:

 ~/.local/lib/python3.8/site-packages/vcdvcd.egg-link

其中包含:

 /home/ciro/vcdvcd

.

并充当 Python 解释器的“符号链接”。

所以现在,如果我对 /home/ciro/vcdvcd 下的 git 源代码进行任何更改,它会自动反映在可以从任何目录执行的导入程序上:

 python -c 'import vcdvcd'

Note however that at my pip version at least, binary files installed with --editable , such as the vcdcat script provided by that package via scripts=setup.py 上,不要进行符号链接,只是复制到:

 ~/.local/bin/vcdcat

就像常规安装一样,因此对 git 存储库的更新不会直接影响它们。

相比之下,常规非 --editable 从 git 源安装:

 python -m pip uninstall vcdvcd

python -m pip install --user .

在以下位置生成已安装文件的副本:

 ~/.local/lib/python3.8/site-packages/vcdvcd

如上所述卸载可编辑包需要一个足够新的 pip,如在: How to uninstall editable packages with pip (installed with -e)

在 Python 3.8、pip 20.0.2、Ubuntu 20.04 中测试。

建议:尽可能直接在树内开发

当您通过另一个项目测试包的补丁时,可编辑设置很有用。

但是,如果您可以完全测试树中的更改,那么就这样做而不是生成更复杂的可编辑安装。

例如,上面的 vcdvcd 包的设置方式是您只需 cd 进入源代码并执行 ./vcdcat 而无需 pip 安装包本身(通常,您可能需要安装依赖项来自 requirements.txt 虽然),以及 import vcdvcd 该可执行文件(或可能是您自己的自定义测试)只是在它所在的同一目录中正确找到包。

原文由 Ciro Santilli OurBigBook.com 发布,翻译遵循 CC BY-SA 4.0 许可协议


回答:

pip install -e ./
对原始包修改代码会即刻生效,文档中叫develop mode

-e,--editable <path/url>

Install a project in editable mode (i.e. setuptools "develop mode") from a local project path or a VCS url.

跟这个选项对应的是不带这个选项:
pip install ./
这样会直接冻结代码,对当前安装的项目改动的就不会修改安装到pip的包,除非重新安装。

以上是 -e, --editable 选项什么时候对 pip install 有用? 的全部内容, 来源链接: utcz.com/p/938709.html

回到顶部