Установить пакет Python в другой каталог, используя pip? - PullRequest
365 голосов
/ 26 мая 2010

Я знаю, что очевидный ответ - использовать virtualenv и virtualenvwrapper, но по разным причинам я не могу / не хочу этого делать.

Так как мне изменить команду

pip install package_name

, чтобы заставить pip установить пакет где-нибудь, отличное от значения по умолчанию site-packages?

Ответы [ 15 ]

427 голосов
/ 16 октября 2013

Переключатель - target - это то, что вам нужно:

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

Но вам все равно нужно добавить d:\somewhere\other\than\the\default к PYTHONPATH, чтобы использовать их из этого места.

-t, --ttarget
Установить пакеты в


Обновить пункт, если целевой переключатель недоступен:

В Linux или OS X:

pip install -U pip

В Windows (это работает вокруг проблемы ):

python -m pip install -U pip
304 голосов
/ 26 мая 2010

Использование:

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

Вы также можете использовать --ignore-installed для принудительной переустановки всех зависимостей с использованием этого нового префикса. Вы можете использовать --install-option несколько раз, чтобы добавить любую опцию, которую вы можете использовать с python setup.py install (--prefix, вероятно, то, что вы хотите, но есть куча других опций, которые вы можете использовать).

61 голосов
/ 17 марта 2015

Вместо опции --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

.. чтобы установить самые последние версии пакетов scipy и numpy в каталог, который затем можно включить в PYTHONPATH, например, так (используя bash и для python 2.6 в CentOS 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 по-прежнему является лучшим и опрятным решением!

42 голосов
/ 13 июня 2012

Установка пакета 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 и т. Д., Подробности см. В выборочная установка опции).

27 голосов
/ 31 августа 2015

Чтобы установить библиотеку точно там, где я хотел, я переместился в папку, в которой я хотел каталог с терминалом, затем использовал

pip install mylibraryName -t . 

логика, которую я взял с этой страницы: https://cloud.google.com/appengine/docs/python/googlecloudstorageclient/download

16 голосов
/ 20 февраля 2018

Никто, кажется, не упомянул опцию -t, но самый простой:

pip install -t <direct directory> <package>
14 голосов
/ 23 декабря 2014

Просто добавьте одно очко к ответу @Ian Bicking:

Использование опции --user для указания установленного каталога также работает, если вы хотите установить какой-либо пакет Python в свой домашний каталог (без права пользователя sudo) на удаленном сервере.

Например,

pip install --user python-memcached

Команда установит пакет в один из каталогов, перечисленных в вашей PYTHONPATH.

12 голосов
/ 24 мая 2017

Более новые версии pip (8 или более поздние версии) могут напрямую использовать опцию --prefix :

pip install --prefix=$PREFIX_PATH package_name

где $PREFIX_PATH - префикс установки, в который помещаются lib, bin и другие папки верхнего уровня.

8 голосов
/ 22 февраля 2019
pip install packageName -t pathOfDirectory

или

pip install packageName --target pathOfDirectorty
8 голосов
/ 20 декабря 2018

Протестировал эти опции с python3.5 и pip 9.0.3:

pip install --target / myfolder [пакеты]

Устанавливает ВСЕ пакеты, включая зависимости в / myfolder. Не учитывает, что зависимые пакеты уже установлены в других местах Python. Вы найдете пакеты из / myfolder / [имя_пакета]. Если у вас несколько версий Python, это не учитывается (версия Python в имени папки пакета отсутствует).

pip install --prefix / myfolder [пакеты]

Проверки - это уже установленные зависимости. Установит пакеты в /myfolder/lib/python3.5/site-packages/[packages]

pip install --root / myfolder [пакеты]

Проверяет зависимости, такие как --prefix, но место установки будет /myfolder/usr/local/lib/python3.5/site-packages/[package_name].

pip install --user [пакетов]

Устанавливает пакеты в $ HOME: /home/[USER]/.local/lib/python3.5/site-packages Python выполняет автоматический поиск по этому пути .local, поэтому вам не нужно помещать его в PYTHONPATH.

=> В большинстве случаев --user - лучший вариант для использования. Если домашняя папка не может быть использована по какой-либо причине, тогда --prefix.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...