'--install-option =' - prefix'`和`--root`和`--target`之间的差异(python)差异

 mobiledu2502914555 发布于 2022-12-27 16:29

pip文件没有太多的字眼(我的眼睛),有关参数的处理源和目的地.

我经历了安装Sphinx的奇怪事情,pip3并且玩了可用的选项,似乎允许我在我想要的地方安装它(出于某些原因,我希望每个东西都在自己的目录中).我说"玩",不是说我没有读过文档也没试过--help,但是因为pip3 help install没有帮助,而且pip安装官方文档页面太短了,实际上说的不多于pip3 help install.

以下是完成的实验和观察结果.

第一个案例 --root

我下载了当前的Sphinx存储库tarball,将其解压缩,进入新创建的目录并执行:

pip3 install --root /home//apps/sphinx -e .

我虽然这是相同的--prefix,因为没有--prefix明显可用的选项.令我惊讶的是,它将命令安装在binPython3目录中(也在本地安装在它自己的目录中)和库目录中的一些东西,奇怪的是,而不是/home//apps/sphinx目录,我得到一个/home//apps/sphinx/home//apps/sphinx/…:它附加了指定的路径对自己.

特别是最后一点是否有意义?目的是--root什么?

第二种情况 --target

然后我,如果它不是--root,那可能是--target,所以我做了(清理后):

pip3 install --target /home//apps/sphinx -e .  

它没有用,抱怨一个未被承认的--home选项.

--home它抱怨的是什么(我没有指明),究竟是--target什么?

第三种情况 --install-option='--prefix=…'

在WebO搜索和StackOverflow上的一个线程之后,我尝试了这个:

pip3 install --install-option='--prefix=/home//apps/sphinx' -e .

它只是抱怨它无法安装.pth文件而且我的问题出了问题PYTHONPATH,这可以通过添加变量定义来重新启动:

export PYTHONPATH=/home//apps/sphinx/lib/python3.4/site-packages
pip3 install --install-option='--prefix=/home//apps/sphinx' -e .

PYTHONPATH甚至在目录实际存在并且安装了任何内容之前就已经设置了这个集合,但是这个是好的(无论是否pip应该PYTHONPATH在过程中更新自己并提醒最终设置它,这是一个有争议的问题).

这个选项很好,也是不太明显的选择.

最后一个相关的:

--editable和之间有什么区别--src

更新#1

我不知道它是否与Sphinx相关,但我注意到了另外两件事.

pip3 install --install-option='--prefix=' -e 

其中repository-dir是本地检出Sphinx,Sphinx安装在install-dir中,列出pip3 list但无法卸载.

相反,做

pip3 install --install-option='--prefix=' Sphinx

也就是说,让我们pip3检索一个档案,Sphinx没有安装在install-dir中,而是安装在python目录中,列出pip3 list并可以卸载.

根据源是本地存储库还是远程存档,它不会安装在同一位置,也不会或将不可卸载.

依赖关系没有受到影响,在两种情况下都以相同的方式处理(安装在预期,列出和可卸载的位置).

更新#2

这种行为--root让我感觉到一种伪根(就像你在构建Debian软件包或交叉编译时得到的那种).如果它的目的是相同的,那么令我感到惊讶的道路恰恰相反,预期.

撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有