Установка пакета.whl Python в определенный каталог, отличный от стандартного

Я пытаюсь установить 64-разрядную версию NTLK, которая входит в файл.whl, в другом каталоге, чем стандартная папка python34/Lib. Я использую 64-битную версию Windows 10 и 64-разрядную версию Python 3.4.

Сначала я попытался использовать инструкции в этом вопросе (который работал для других модулей).

Команда, введенная в CMD, была:

py -m pip install --install-option="--prefix=$PATH_NAME" nltk-3.0.4-py2.py3-none-any.whl

Он быстро дал мне следующую ошибку:

UserWarning: Отключение всех использования колес из-за использования --build-options / --global-options / --install-options.

Похоже, что я не могу установить WHL файлы с помощью опции -install. Есть ли альтернативный способ установить пакет.whl в каталог, не являющийся стандартом?

Изменение: я отметил это как решение, потому что предлагаемое решение позволяет мне делать то, что мне нужно, в моем собственном случае использования. Тем не менее, он не полностью отвечает на вопрос из-за присущих ограничений при использовании --root для выбора альтернативного каталога. Технически нет правильного решения этой проблемы, см. Комментарии к ответам для деталей.

Редактировать - 3 марта 2017 года. Похоже, эта проблема была решена в версии 8.0 PIP с добавлением параметра --prefix. Я изменил принятый ответ соответственно.

Ответы

Ответ 1

Вы можете использовать --prefix для pip install, доступную с версии 8:

--prefix

Installation prefix where lib, bin and other top-level folders are placed

Обратите внимание, что pip uninstall --prefix не имеет опции --prefix, поэтому нет очевидного способа удалить пакеты, установленные таким образом. В качестве обходного пути установите PYTHONUSERBASE в каталог префикса, например:

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

Ответ 2

Почему так происходит

При запуске pip install из исходного кода он вызывает процесс сборки, который запускает скрипт setup.py и передает ему --install-option вы передаете.

Однако установка колес не вызывает этот процесс сборки, и пока не принято решение о поддержке этих вариантов использования (см. Текущее обсуждение).

Возможное решение

Тем не менее, pip install это в настоящее время поддерживает установку пользовательских мест с опциями --user и --root, что может достичь того, что вы ищете.

Предостережения

Как уже упоминалось в комментариях, существует проблема с обнаружением того, установлен ли пакет при использовании --root, и обходной путь может использовать --upgrade или --ignore-installed.

Кроме того, использование --root установит модуль в user_defined_path/python34/Lib/site-packages/. Это делает этот параметр полезным для установки библиотеки на другом диске или установке python без установки по умолчанию, но не позволяет устанавливать ее в определенную папку в определенном каталоге.

Ответ 3

Другим способом решения проблемы может быть использование 7-zip и распаковка файла whl, который внутри распакованного каталога предоставит вам правильную папку модуля python, которую вы можете скопировать и вставить туда, где хотите.