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



我想为整个团队设置一个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 和"--前缀"选项结合起来,因此我可以安装到任意路径中,但随后与已安装的系统范围的软件包发生冲突或安装到我的主目录中。它们都不是我需要的。现在我一直在使用 --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"

大多数情况下,如果您必须为每个库执行此操作,这将是一个痛苦的屁股(请注意,如果您想使用默认站点包目录中的某些标准库以及自定义目录中的其他标准库,您仍然会与imports发生潜在的冲突)。正如评论所说,最好的选择可能是安装virtualenvvirtualenvwrapper

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

最新更新