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

那么如何修改命令呢

pip install package_name

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


当前回答

安装Python包通常只包含一些纯Python文件。如果包包含数据、脚本和(或)可执行文件,则这些文件将安装在与纯Python文件不同的目录中。

假设你的包没有数据/脚本/可执行文件,并且你希望你的Python文件进入/ Python /packages/package_name(而不是像使用——prefix时那样在/ Python /packages下面几层的子目录),你可以使用one time命令:

pip install --install-option="--install-purelib=/python/packages" package_name

如果你想要所有(或大部分)你的包都在那里,你可以编辑你的~/.pip/pip.conf包含:

[install]
install-option=--install-purelib=/python/packages

这样,您就不会忘记必须一次又一次地指定它。

包中包含的任何可执行文件/数据/脚本仍然会放在默认位置,除非你指定了额外的安装选项(——prefix/——install-data/——install-scripts等,详情请参阅自定义安装选项)。

其他回答

Use:

pip install --install-option="--prefix=$PREFIX_PATH" package_name

您可能还想使用——ignore-installed强制使用这个新前缀重新安装所有依赖项。你可以多次使用——install-option来添加任何你可以在python setup.py install中使用的选项(——prefix可能是你想要的,但你可以使用更多的选项)。

再加上已经很好的建议,因为当我没有对/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访问的机器上有类似的问题。

不幸的是,如果您在python中使用brew, pip/pip3附带的选项非常有限。你没有上面提到的——install-option,——target,——user选项。

注意pip install——user 对于已酿造的Python,禁用了正常的pip install——user。这是因为distutils中的一个错误,因为Homebrew编写了一个distutils.cfg来设置包前缀。 一个可能的解决方案(将可执行脚本放在~/Library/Python/./bin中)是: Python -m PIP install——user——install-option="——prefix=" <package-name>

您可能会发现这一行非常麻烦。我建议使用pyenv进行管理。 如果你正在使用

编译升级python python3

讽刺的是,你实际上降低了pip的功能。

(我发布这个答案,只是因为我的mac osx中的pip没有目标选项,我花了几个小时来修复它)

有时它只对Cache参数有效

-m pip install -U pip --target=C:\xxx\python\lib\site-packages Pillow --cache-dir C:\tmp

使用python3.5和pip 9.0.3测试这些选项:

PIP install——target /myfolder [packages]

安装所有包,包括/myfolder下的依赖项。没有考虑到Python中已经在其他地方安装了依赖包。您将在/myfolder/[package_name]中找到包。如果你有多个Python版本,这不会考虑到这一点(包文件夹名中没有Python版本)。

PIP install——prefix /myfolder [packages]

检查是否已经安装了依赖项。将包安装到/myfolder/lib/python3.5/site-packages/[packages]

PIP install——root /myfolder [packages]

检查依赖项,如——prefix,但安装位置将是/myfolder/usr/local/lib/python3.5/site-packages/[package_name]。

PIP安装——用户[包]

将包安装到$HOME: /home/[用户]/。local / lib / python3.5 /网站 Python自动从这个.local路径搜索,所以你不需要把它放在你的PYTHONPATH中。

在大多数情况下——user是最好的选择。 以防主文件夹不能使用,因为一些原因,然后-前缀。