我知道最明显的答案是使用virtualenv和virtualenvwrapper,但由于各种原因,我不能/不想这样做。

那么如何修改命令呢

pip install package_name

让PIP在默认的site-packages之外的地方安装这个包?


当前回答

似乎没有人提到-t选项,但最简单的是:

pip install -t <direct directory> <package>

其他回答

似乎没有人提到-t选项,但最简单的是:

pip install -t <direct directory> <package>

再加上已经很好的建议,因为当我没有对/usr/local的写权限时,我在安装IPython时遇到了问题。

PIP使用distutils来进行安装,本线程讨论了这是如何导致问题的,因为它依赖于sys。前缀设置。

我的问题发生在IPython安装试图写入'/usr/local/share/man/man1'时,而Permission被拒绝。由于安装失败,似乎没有在bin目录中写入IPython文件。

使用“——user”可以工作,文件被写入~/.local。添加~ /。local/bin到$PATH意味着我可以从那里使用“ipython”。

但是,我正在尝试为一些用户安装这个,并且已经获得了对/usr/local/lib/python2.7目录的写权限。我在那里创建了一个“bin”目录,并为distutils设置指令:

vim ~/.pydistutils.cfg

[install]
install-data=/usr/local/lib/python2.7
install-scripts=/usr/local/lib/python2.7/bin

然后(-I用于强制安装,尽管之前失败了/。本地安装):

pip install -I ipython

然后我将/usr/local/lib/python2.7/bin添加到$PATH中。

我想我应该包括这个,以防其他人在他们没有sudo访问的机器上有类似的问题。

pip install packageName -t pathOfDirectory

or

pip install packageName --target pathOfDirectorty

对于Python v2.7.3 (GNU/Linux)上的pip v1.5.6, option——root允许指定全局安装前缀,(显然)与特定包的选项无关。尝试f.i。,

$ pip install --root=/alternative/prefix/path package_name

我建议按照文档创建~/.pip/pip.conf文件。注意在文档中缺少指定的头目录,这将导致以下错误:

error: install-base or install-platbase supplied, but installation scheme is incomplete

conf文件的完整工作内容是:

[install]
install-base=$HOME
install-purelib=python/lib
install-platlib=python/lib.$PLAT
install-scripts=python/scripts
install-headers=python/include
install-data=python/data

不幸的是,我可以安装,但当尝试卸载pip告诉我没有这样的软件包卸载过程....所以还是有问题,但是包会回到预定义的位置。