Python pip:安装在特定的非用户目录中,忽略系统范围的软件包

Python pip:安装在特定的非用户目录中,忽略系统范围的软件包,python,pip,Python,Pip,我想为整个团队建立一个Python环境,但我没有对服务器的root访问权限 我已经用Perl做了类似的事情,并希望能够用类似的方式为Python做这件事,但我一直遇到一个问题 基本上,我希望能够将包安装到系统上的/SOME/DIR中,同时忽略该包的任何系统范围版本。 然而,当我跑的时候 pip install --install-option="--prefix=/SOME/DIR/" --up --ignore-installed SOME-MODULE 我一直收到一个“权限被拒绝”错误,因

我想为整个团队建立一个Python环境,但我没有对服务器的root访问权限

我已经用Perl做了类似的事情,并希望能够用类似的方式为Python做这件事,但我一直遇到一个问题

基本上,我希望能够将包安装到系统上的/SOME/DIR中,同时忽略该包的任何系统范围版本。 然而,当我跑的时候

pip install --install-option="--prefix=/SOME/DIR/" --up --ignore-installed SOME-MODULE
我一直收到一个“权限被拒绝”错误,因为pip在升级时一直试图删除系统范围的软件包。 这有什么用

pip install --user --up --ignore-installed SOME-MODULE
它不尝试触摸系统范围的软件包,但它将模块安装到$HOME/.lib目录中,这不是我需要的

似乎不可能将--user和“-prefix”选项组合在一起,因此我可以将其安装到任意路径中,但随后会与已安装的系统范围软件包发生冲突,或者安装到我的主目录中。他们两个都不是我需要的。 现在,我一直在使用--user选项,然后将安装的文件移到/SOME/DIR,这很有效,但看起来很奇怪

我错过什么了吗?我读过virtualenv,但这听起来也不是我所需要的。谢谢你的帮助

注意,
--install options
直接传递到packages
setup.py install
命令-这要求安装目录位于python路径中。 将其添加到您的
PYTHONPATH

set-gx PYTHONPATH$PYTHONPATH'/home/user/temp/lib/python3.4/site packages'

然后跑皮普

pip install django==1.6 --ignore-installed --install-options="--prefix=/home/user/temp"

如果您必须为每个库执行此操作,这通常是一个麻烦(请注意,如果您希望使用默认站点包目录中的某些标准库,以及自定义目录中的其他库,则仍可能与导入发生冲突)。正如评论所说,最好的选择可能是安装
virtualenv
virtualenvwrapper

我也遇到了类似的问题(权限被拒绝+没有根访问权),--build选项成功:pip安装--install选项=“--prefix=/path/to/local/lib”--build=/tmp wget

virtualenv以何种方式听起来不像您所需要的?此示例适用于我,只要将程序包安装到自定义目录—您可以提供您的特定错误消息吗?是的,当我安装的程序包尚未在系统范围内安装且其任何依赖项都不存在时,它确实有效。一旦软件包或依赖项在系统范围内安装完毕,就会发生冲突,因为即使安装了--ignore,pip仍坚持尝试删除它option@MattDMo:virtualenv似乎更适合为特定的编码项目创建模块库。我想为我的团队创建一个使用Python的环境。我们不是使用Python开发,只是使用第三方Python脚本。我似乎只需要在bashrc中设置PyTHONPATH并告诉pip在哪里安装软件包就可以了,但pip似乎坚持我只能在自己的主目录中这样做,我不明白。谢谢。我的PYTHONPATH中确实有/SOME/DIR路径,而且似乎都设置正确,因为一旦我安装了模块,它就可以在该路径中找到,没有任何问题。关于混合模块存储库中潜在冲突的公平点。您是否已使其正常工作?(直接运行setup.py可能更容易调试,如果可以的话,pip也应该可以)好的,从某种意义上说,它可以安装到我的主目录中,然后pip忽略已经安装的系统范围的软件包。然后我必须将结果复制到实际的目标目录(在PYTHONPATH中)。实际上忽略系统范围安装的功能似乎只适用于--user选项。我仍然对separate--ignore-installed的用例感到困惑,它似乎没有做标签上的事情