将pip包安装到$ HOME文件夹

Som*_*DOS 323 python pip

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

我正在使用mac机器,只是想到了这种可能性,而不是"污染"我的/usr/local,我会用我的$HOME代替.

PEP370正是如此.只是创建一个˜/.local并做pip install package足以使这些包只安装在我的$ HOME文件夹中?

Ned*_*ily 457

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

pip install --user mercurial
Run Code Online (Sandbox Code Playgroud)

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

注意,以上适用于Python 2.6.一直有一些争议的关于什么是PEP370风格的Mac OS X上的相应目录位置Python的核心开发者user安装.在Python 2.7和3.2中,Mac OS X上的位置从更改$HOME/.local$HOME/Library/Python.这可能会在将来的版本中发生变化.但是,目前,在2.7(和3.2,如果hg在Python 3上受支持),上面的位置将是$HOME/Library/Python/x.y/bin/hg$HOME/Library/Python/x.y/lib/python/site-packages.

  • 请注意,在OSX上,用户站点目录的bin文件夹不在PATH上.这意味着除非你导出PATH = $ PATH:〜/ Library/Python/XY/bin /`,否则用户站点目录中的包安装的脚本将不可执行. (11认同)
  • 请注意,如果你这样做,然后尝试使用conda环境,`.local`中安装的文件将始终首先被命中,这可能导致很难追踪导入错误. (2认同)

Ros*_*son 21

我会在你的HOME目录中使用virtualenv.

$ sudo easy_install -U virtualenv
$ cd ~
$ virtualenv .
$ bin/pip ...
Run Code Online (Sandbox Code Playgroud)

然后你也可以改变~/.(login|profile|bash_profile),以适合你的shell添加〜/ bin到你的PATH然后那pip|python|easy_install将是默认使用的那个.

  • *"事实上"*这样做的方法是`virtualenv venv`,`source venv/bin/activate`.您可能不一定想**总是**使用您的virtualenv,并且通过使用此方法,当您使用它时,您的提示符以`(venv)`为前缀. (9认同)
  • @itsafire谁是"我们"?我建议你阅读https://en.wikipedia.org/wiki/Weasel_word (7认同)
  • 无论如何,我不同意,这不是一个"整洁的解决方案".这是一个毫无意义的黑客攻击. (3认同)
  • @ nyuszika7h我们知道如何使用virtualenv.但这真的回答了这个问题,是一个非常巧妙的解决方案. (2认同)

Foi*_*vos 17

您可以指定-toption(--target)以指定目标目录.有关pip install --help详细信息,请参阅 这是您需要的命令:

pip install -t path_to_your_home package-name
Run Code Online (Sandbox Code Playgroud)

例如,对于安装说mxnet,在我的$HOME目录中,我键入:

pip install -t /home/foivos/ mxnet
Run Code Online (Sandbox Code Playgroud)