-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/vcdvcdInstalling 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 vcdvcdpython -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