将pip包安装到$HOME文件夹

这可能吗?在安装pip时,将python包安装在我的$HOME文件夹中。(例如,我想安装mercurial,使用pip,但在$HOME而不是/usr/local)

我使用mac机器,只是考虑了这种可能性,而不是“污染”我的/usr/local,我将使用我的$HOME代替。

PEP370就是这样的。仅仅创建˜/.local并执行pip install package就足以使这些包只安装在我的$HOME文件夹中吗?

323707 次浏览

我会在你的HOME目录下使用virtualenv。

$ sudo easy_install -U virtualenv
$ cd ~
$ virtualenv .
$ bin/pip ...

然后你也可以改变~/.(login|profile|bash_profile),无论哪个对你的shell来说是正确的,将~/bin添加到你的PATH中,然后pip|python|easy_install将是默认使用的。

虽然可以使用virtualenv,但不需要这样做。诀窍是将PEP370 --user参数传递给setup.py脚本。对于pip的最新版本,一种方法是:

pip install --user mercurial

这将导致hg脚本安装在$HOME/.local/bin/hg中,hg包的其余部分安装在$HOME/.local/lib/pythonx.y/site-packages/中。

注意,上述情况适用于Python 2.6。关于在Mac OS X上安装pep370风格的user的合适目录位置,Python核心开发人员之间一直存在有点争议。在Python 2.7和3.2中,Mac OS X上的位置从$HOME/.local更改为$HOME/Library/Python。这可能会在未来的版本中改变。但是,目前,在2.7(和3.2,如果Python 3支持hg),上述位置将是$HOME/Library/Python/x.y/bin/hg$HOME/Library/Python/x.y/lib/python/site-packages

你可以指定-t选项(--target)来指定目标目录。详细信息见pip install --help。这是你需要的命令:

pip install -t path_to_your_home package-name

例如,为了安装mxnet,在我的$HOME目录中,我键入:

pip install -t /home/foivos/ mxnet

简短地回答你的两个问题

一个

是的

可以将pip包安装到$ HOME而不是/usr/local/lib/,但是

两个

mkdir ˜/.local # then
pip install package

还不够。

你需要

pip install package --user

这些包被安装到

/home/user/.local/lib/python3.x/site-packages

当不需要--user时异常

  • 如果你是不是root用户
  • DebianWsl - Windows子系统Linux 没有注意到
  • 在Ubuntu 20.04上,请注意 default to user installation because normal site-packages not writeable -默认配置是/usr/lib,除了root用户,其他用户不能写