该pip
文件没有太多的字眼(我的眼睛),有关参数的处理源和目的地.
我经历了安装Sphinx的奇怪事情,pip3
并且玩了可用的选项,似乎允许我在我想要的地方安装它(出于某些原因,我希望每个东西都在自己的目录中).我说"玩",不是说我没有读过文档也没试过--help
,但是因为pip3 help install
没有帮助,而且pip安装官方文档页面太短了,实际上说的不多于pip3 help install
.
以下是完成的实验和观察结果.
--root
我下载了当前的Sphinx存储库tarball,将其解压缩,进入新创建的目录并执行:
pip3 install --root /home//apps/sphinx -e .
我虽然这是相同的--prefix
,因为没有--prefix
明显可用的选项.令我惊讶的是,它将命令安装在bin
Python3目录中(也在本地安装在它自己的目录中)和库目录中的一些东西,奇怪的是,而不是/home/
目录,我得到一个/home/
:它附加了指定的路径对自己.
特别是最后一点是否有意义?目的是--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
?
我不知道它是否与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
并可以卸载.
根据源是本地存储库还是远程存档,它不会安装在同一位置,也不会或将不可卸载.
依赖关系没有受到影响,在两种情况下都以相同的方式处理(安装在预期,列出和可卸载的位置).
这种行为--root
让我感觉到一种伪根(就像你在构建Debian软件包或交叉编译时得到的那种).如果它的目的是相同的,那么令我感到惊讶的道路恰恰相反,预期.