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

那么如何修改命令

pip install package_name

制作 pip 将软件包安装在默认设置以外的地方 site-packages?

有帮助吗?

解决方案

采用:

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

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

其他提示

- 目标 切换是您要寻找的东西:

pip install --target=d:\somewhere\other\than\the\default package_name

但是您仍然需要添加 d:\somewhere\other\than\the\defaultPYTHONPATH 实际上是从该位置使用它们。

-t, - 目标u003Cdir>
将软件包安装到中u003Cdir>。默认情况下,这不会替换现有的文件/文件夹u003Cdir>。
使用 - 升级以替换现有软件包中的现有软件包u003Cdir>使用新版本。


升级PIP如果目标开关不可用:

在Linux或OS X上:

pip install -U pip

在Windows上(这可以解决 一个问题):

python -m pip install -U pip

而不是 --target 选项或 --install-options 选项,我发现以下内容效果很好(从讨论有关此事情的错误的讨论 https://github.com/pypa/pip/issues/446):

PYTHONUSERBASE=/path/to/install/to pip install --user

(或设置 PYTHONUSERBASE 运行命令之前,您的环境中的目录,使用 export PYTHONUSERBASE=/path/to/install/to)

这使用了非常有用的 --user 选项,但告诉它 bin, lib, share 以及您期望在自定义前缀而不是期望的其他目录 $HOME/.local.

然后,您可以将其添加到您的 PATH, PYTHONPATH 以及其他变量,就像您将使用普通的安装目录一样。

请注意,您可能还需要指定 --upgrade--ignore-installed 选项,如果任何依赖的软件包都需要安装较新的版本 PYTHONUSERBASE 目录,覆盖系统提供的版本。

一个完整的示例:

PYTHONUSERBASE=/opt/mysterypackage-1.0/python-deps pip install --user --upgrade numpy scipy

..安装 scipynumpy 将最新版本包装到目录中,然后您可以将其包含在您的 PYTHONPATH 像这样(在此示例中使用Bash和CentOS 6上的Python 2.6):

export PYTHONPATH=/opt/mysterypackage-1.0/python-deps/lib64/python2.6/site-packages:$PYTHONPATH
export PATH=/opt/mysterypackage-1.0/python-deps/bin:$PATH

使用Virtualenv仍然是一个更好,更整洁的解决方案!

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

假设您的软件包没有数据/脚本/可执行文件,并且您希望您的Python文件进入 /python/packages/package_name (而不是某些子目录以下几个级别 /python/packages 如使用时 --prefix),您可以使用一个时间命令:

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, 等等,有关详细信息,请查看 自定义安装 选项)。

要精确地安装我想要的地方的库,我将其导航到我想要的位置,然后使用终端。

pip install mylibraryName -t . 

我从此页面上获得的逻辑: https://cloud.google.com/appengine/docs/python/googleclecloudstorageclient/download

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

pip install -t <direct directory> <package>

只需在@ian Bicking的答案中添加一个点:

使用 --user 如果要在远程服务器上将某些Python软件包安装到一个人的主目录中(没有Sudo用户权利),则可以指定已安装目录的选项。

例如,

pip install --user python-memcached

该命令将将软件包安装到您的PythonPath中列出的目录之一中。

较新的版本 pip (8或以后)可以直接使用 --prefix 选项:

pip install --prefix=$PREFIX_PATH package_name

在哪里 $PREFIX_PATH 是放置LIB,BIN和其他顶级文件夹的安装前缀。

用Python3.5和PIP 9.0.3测试了这些选项:

PIP安装 - 目标 /myFolder [软件包

安装所有软件包,包括依赖依赖 /myFolder。没有考虑到python其他地方已经安装了依赖的软件包。您会从 /myFolder /[package_name]找到包装。如果您有多个Python版本,则不会考虑到这一点(包装夹名称中没有Python版本)。

PIP安装 - prefix /myFolder [软件包

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

PIP安装 - 根 /myFolder [软件包

检查依赖项,例如-prefix,但安装位置将为/米福德/usr/local/lib/python3.5/site-packages/ [package_name]。

PIP安装 - 用户[软件包

将在$ HOME中安装软件包:/home/ [user ]/.local/lib/python3.5/site-packages python从此.Local路径自动搜索python,因此您无需将其放在Pythonpath上。

=>在大多数情况下 - 使用者是使用的最佳选择。如果由于某种原因而无法使用主文件夹,那么-prefix。

pip install packageName -t pathOfDirectory

或者

pip install packageName --target pathOfDirectorty

为了增加已经很好的建议,因为我已经安装了一个问题 ipython 当我没有写权时 /usr/local.

PIP使用distutils进行安装和 这个线程 讨论如何引起问题,因为它依赖于 sys.prefix 环境。

当ipython安装尝试写入'/usr/local/share/man/man1'时,我的问题发生了 没有权限. 。由于安装失败,因此似乎没有在bin目录中写入ipython文件。

使用“ - 用户”工作,并将文件写入〜/.local。在$路径中添加〜/.local/bin意味着我可以从那里使用“ ipython”。

但是,我正在尝试为许多用户安装此操作 /usr/local/lib/python2.7 目录。我在那里创建了一个“垃圾箱”目录,并为Distutils设置了指令:

vim ~/.pydistutils.cfg

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

然后 (-I 尽管以前的失败/.Local安装)被用来强制安装:

pip install -I ipython

然后我添加了 /usr/local/lib/python2.7/bin$PATH.

我以为我会在没有Sudo访问的机器上遇到类似问题的其他任何问题。

不幸的是,如果您将brew与Python一起使用,则PIP/PIP3船舶的选项非常有限。您没有如上所述的安装选项, - 目标, - 用户选项。

笔记 在PIP安装 - 用户
普通的PIP安装 - 用户用于酿造的Python。这是因为distutils中的错误,因为自制的distrutils.cfg写下了包装前缀。可能的解决方法(将可执行脚本放入〜/library/python/./ bin中)是: python -m pip install --user --install-option="--prefix=" <package-name>

您可能会发现这条线很麻烦。我建议将Pyenv用于管理。如果您正在使用

brew upgrade python python3

具有讽刺意味的是你实际上是 降级 PIP功能。

(我发布此答案,仅仅是因为我的Mac OSX中的PIP没有 - 目标选项,而我花了几个小时来修复它)

pip install /path/to/package/

现在有可能。

与此的区别以及使用 -e 或者 --editable 标志就是这样 -e 链接到保存软件包的位置(即您的下载文件夹),而不是将其安装到Python路径中。

这意味着,如果您将软件包删除/将软件包移至另一个文件夹,则将无法使用它。

与pip v1.5.6 在Python上 v2.7.3 (gnu/linux),选项 --root 允许指定全局安装前缀,(显然)无论特定软件包的选项如何。尝试fi,

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

我建议遵循文档并创建〜/.pip/pip.conf文件。注意文档中缺少指定的标头目录,这导致以下错误:

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

Conf File的完整工作内容是:

[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告诉我没有用于卸载过程的软件包时。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top