将.whl Python包安装到默认目录以外的特定目录中

将.whl Python包安装到默认目录以外的特定目录中,python,Python,我正在尝试将64位版本的NTLK安装到一个不同于标准python34/Lib文件夹的目录中,它位于一个.whl文件中。我使用的是Windows 10 64位和Python 3.4 64位 我第一次尝试使用中的说明(适用于其他模块) 我在CMD中键入的命令是: py -m pip install --install-option="--prefix=$PATH_NAME" nltk-3.0.4-py2.py3-none-any.whl 它立即给了我以下错误: 用户警告:由于使用--build o

我正在尝试将64位版本的NTLK安装到一个不同于标准python34/Lib文件夹的目录中,它位于一个.whl文件中。我使用的是Windows 10 64位和Python 3.4 64位

我第一次尝试使用中的说明(适用于其他模块)

我在CMD中键入的命令是:

py -m pip install --install-option="--prefix=$PATH_NAME" nltk-3.0.4-py2.py3-none-any.whl
它立即给了我以下错误:

用户警告:由于使用--build options/--global options/--install options,因此禁用所有控制盘的使用

似乎无法使用--install选项安装WHL文件。是否有其他方法可以在非默认目录中安装.whl包

编辑:我将此标记为已解决,因为建议的解决方案允许我在自己的用例中执行所需的操作。但是,由于使用
--root
选择备用目录的固有限制,它并不能完全回答这个问题。从技术上讲,此问题没有正确的解决方案,有关详细信息,请参阅答案的注释

编辑-2017年3月3日:在PIP的8.0版中,似乎通过添加--prefix参数解决了这个问题。我已相应地更改了已接受的答案。

为什么会发生这种情况
从源代码运行
pip install
时,它会调用,这将运行setup.py脚本并将传入的
--install选项传递给它

但是,安装控制盘不会调用此构建过程,到目前为止,还没有决定支持这些用例(请参阅)

可能的解决办法 但是,
pip install
目前确实支持使用选项和安装到自定义位置,这可能会实现您想要的功能

警告 如评论中所述,在使用
--root
时,检测包是否已安装似乎存在问题,解决方法可能是使用
--upgrade
--ignore installed
选项


此外,使用
--root
将模块安装到
用户定义的路径/python34/Lib/site-packages/
。这使得此选项对于在其他驱动器或非默认python安装上安装库非常有用,但不允许安装到特定目录中的特定文件夹

查看解决问题的另一种方法是使用7-zip并解压whl文件,解压目录中的whl文件将为您提供一个python模块的适当文件夹,然后您可以将其复制并粘贴到任何您想要的地方

您可以使用
pip安装
的文件夹,该文件夹可从以下位置获得:

--前缀

请注意,它没有
--prefix
选项,因此没有明显的方法卸载以这种方式安装的软件包。作为解决方法,请设置前缀目录,例如:

PYTHONUSERBASE=prefix-dir python3 -m pip uninstall package-name

pip-install
from-source调用一个构建过程,该过程运行
setup.py
脚本,从而接受此步骤的
--install-options
。但是,安装控制盘不会调用此生成过程,并且尚未做出任何决定。但是,在某些情况下,pip install当前支持和,这可能会实现您想要的结果。@Tutudaju:“某些情况”是什么?它是否接受轮子的那些参数,或者你是说它取决于更具体的事情(比如它对某些软件包有效,但对其他软件包无效)?这些参数对轮子有效,我的意思是这些参数不涵盖所有可能的场景(这是
--install option
所做的),例如,
--root=$DIR
将安装一个包(包括一个
轮子
)到
$DIR/usr/local/lib/python2.7/site包
@tututudaju,使用
--root
和.whl一起工作,但它一直说“需求已经满足”,所以我不得不使用
pip安装--upgrade--root=“$path”$file\u path
,尽管没有现有的安装。我不明白为什么会这样,也许你能解释一下?在任何情况下,您能否将您的解决方案作为答案发布,以便我将其标记为正确?这解释了产生错误的原因,但没有回答“是否有方法将控制盘安装到特定目录(与用户或根目录无关)”这一基本问题。您是说这是不可能的吗?什么是与根目录无关?root回答了这个问题,但是
--安装选项
仍然有许多更灵活的选项。正如您的评论所说,使用
--root==$DIR
将安装到
$DIR/usr/local/lib/python2.7/站点软件包
。如果我想安装到
/my/own/directory
,那该怎么办?确切地说,你唯一能做的就是像往常一样使用
--不使用轮子
/
--不使用二进制文件
--安装选项
。还有更多的安装方案,你也可以用符号链接来破解。
PYTHONUSERBASE=prefix-dir python3 -m pip uninstall package-name