python,改变用户站点目录或使用--user安装setup.py --prefix
我想以非管理员用户的身份安装Python模块,像这样:
$ pip install -I --install-option="--prefix=~/usr" scipy
可惜的是,通常这样做是行不通的,除非你加上 --user
这个选项。不过,--user
不能和 --prefix
一起使用。单独使用 --user
(不加 --prefix
)会把模块安装到 ~/.local
目录下,我觉得这样不好,因为我已经有一个整理得很好的 ~/usr
目录,不想再往 env
里添加更多东西,让 ~/.local
也变得可用。
所以我有几个问题:
- 我该如何让
--prefix
和--user
一起在 setup.py 中工作,或者还有什么其他方法可以让 setup.py 成功运行,而不使用--user
? - 或者我能不能通过
env
的某种方式,把用户的站点目录从~/.local
改成~/usr
?
1 个回答
来回答你的第一个问题:
在Greg Ward写的《安装Python模块》指南中,我们看到:
注意,不同的安装方式是互相排斥的:你可以选择 --user,或者 --home,或者 --prefix 和 --exec-prefix,或者 --install-base 和 --install-platbase,但你不能把这些选项混在一起用。
来回答你的第二个问题:
在同一指南中,有一部分是关于替代安装:用户方案,我们看到:
文件将被安装到
site.USER_BASE
的子目录中。
site.USER_BASE
这个链接指向https://docs.python.org/2/library/site.html#site.USER_BASE。在这里,我们还被要求查看有关PYTHONUSERBASE
环境变量的信息:
这个变量定义了用户基础目录,用来计算用户的 site-packages 目录的路径,以及使用 python setup.py install --user 时的 Distutils 安装路径。
另外,你可能还会对家目录方案感兴趣:
“家目录方案”的想法是,你可以建立和维护一个个人的 Python 模块库。这个方案的名字来源于 Unix 系统中的“家”目录,因为 Unix 用户通常会把他们的家目录设置得类似于 /usr/ 或 /usr/local/。