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

时间:2015-01-21 17:27:07

标签: python pip

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

我和Perl做过类似的事情,并期望能够以类似的方式为Python做这件事,但我一直遇到问题。

基本上,我希望能够在系统上的/ SOME / DIR中安装软件包,而忽略该软件包的任何系统范围版本。 但是,当我跑

pip install --install-option="--prefix=/SOME/DIR/" --up --ignore-installed SOME-MODULE

我一直得到#34;许可被拒绝"错误,因为pip在升级时一直试图删除系统范围的包。 这是什么工作

pip install --user --up --ignore-installed SOME-MODULE

哪些尝试触摸系统范围的软件包,但它会将模块安装到$ HOME / .lib中的目录中,这不是我需要的。

似乎无法合并--user和" - 前缀"选项,所以我可以 安装到任意路径,但然后与已经安装的系统范围的包发生冲突或安装到我的主目录中。它们都不是我需要的。 现在我一直在使用--user选项,然后将已安装的文件移动到/ SOME / DIR,但这看起来很奇怪。

我错过了什么吗?我已经阅读了virtualenv,但这听起来并不像我需要的那样。谢谢你的帮助!

2 个答案:

答案 0 :(得分:2)

请注意--install-options直接传递给packages setup.py install命令 - 这需要安装目录位于python路径中。 将其添加到您的PYTHONPATHset -gx PYTHONPATH $PYTHONPATH '/home/user/temp/lib/python3.4/site-packages'

并运行pip

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

如果您必须为每个库执行此操作,那么这主要是一个痛苦(请注意,如果您要使用默认site-packages目录中的某些标准库,您仍然可能与imports发生冲突,以及来自您的自定义目录的其他人)。正如评论所说,最佳选择可能是安装virtualenvvirtualenvwrapper

答案 1 :(得分:0)

我有类似的问题(权限被拒绝+没有root权限), - build选项使它工作:pip install --install-option =“ - prefix = / path / to / local / lib”--build = / tmp wget