【问题标题】:python, change user site directory or install setup.py --prefix with --userpython,更改用户站点目录或使用 --user 安装 setup.py --prefix
【发布时间】:2014-08-16 16:37:25
【问题描述】:

我想像这样以非 root 用户身份安装 python 模块

$ pip install -I --install-option="--prefix=~/usr" scipy

不幸的是,除非您指定--user,否则这通常不起作用。但是--user不能和--prefix一起使用。仅使用--user(不使用--prefix)安装到~/.local,我觉得这很难看,因为我有一个维护良好的~/usr,并且不想在我的env 中添加更多东西以使~/.local 可用也是。

所以我的问题:

  1. 如何让--prefix 和--user 一起为 setup.py 工作,否则 setup.py 不使用 --user 怎么能成功?
  2. 或者我可以通过env将用户站点目录从~/.local更改为~/usr吗?

【问题讨论】:

  • 我不明白为什么--install-option="--prefix=~/usr" 不应该工作。请告诉我们您遇到了什么错误。
  • 对我来说 --prefix 仅在尚未全局安装时才有效。它尝试卸载全局模块并因错误而中止。我可以以某种方式禁用“卸载”吗? --ignore-installed 是不够的。
  • 我猜--ignore-installed 与--install-option="--prefix=..." 不兼容,因为前者是pip 的选项,而后者直接传递给setuptools。您可以尝试使用 pip 的 --target 选项,这应该可以防止 pip 尝试卸载系统范围的软件包。
  • --target 也不起作用。我还直接使用 setup.py 进行了很多尝试,以避免 pip 的任何奇怪行为。 (请注意,在 pip

标签: python pip setup.py pythonpath


【解决方案1】:

回答你的第一个问题:

在 Greg Ward 编写的 Installing Python Modules 指南中,我们读到:

请注意,各种备用安装方案是相互的 独占:您可以通过 --user 或 --home 或 --prefix 和 --exec-prefix 或 --install-base 和 --install-platbase,但不能混用这些组。

回答你的第二个问题:

在同一指南中,我们阅读了 Alternate installation: the user scheme 部分:

文件将被安装到site.USER_BASE的子目录中

site.USER_BASE 链接到 https://docs.python.org/2/library/site.html#site.USER_BASE。我们还被要求查看PYTHONUSERBASE 环境变量的信息:

定义用户基本目录,用于计算路径 用户 site-packages 目录和 Distutils 安装路径 python setup.py install --user.

另外,您可能对the home scheme 感兴趣:

“家庭计划”背后的理念是您构建并维护一个 Python 模块的个人存储。该方案的名称来源于 Unix 上的“主”目录的想法,因为对于一个 Unix 用户使他们的主目录具有类似于 /usr/ 的布局 或 /usr/local/。

【讨论】:

  • 谢谢! PYTHONUSERBASE env 解决了我的问题。不幸的是,手册页中没有提到它。
  • @rudimeier:对,man python 提到了 PYTHONNOUSERBASE,但没有提到 PYTHONUSERBASE。你介意在 bugs.python.org 上报告这个吗?
  • 手册页中真的有 PYTHONNOUSERBASE 吗?我只有 PYTHONNOUSERSITE(选项 -s)。 *USERBASE 是与 *USERSITE 不同的东西吗?我要报告错误。
  • 我打错了,确实是 PYTHONNOUSERSITE。 (USERBASE envvar/option/variable 是用于定义 USERSITE 和其他目录(如脚本目录)的基础。)
  • wtf 我们可以设置环境变量还是..?作为一个python的临时用户,我不知道site.USER_BASE指的是什么。
猜你喜欢
  • 2015-09-22
  • 2012-10-03
  • 2011-05-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-02
  • 1970-01-01
相关资源
最近更新 更多