Вопрос-Ответ

Install a Python package into a different directory using pip?

Установить пакет Python в другой каталог с помощью pip?

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

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

pip install package_name

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

Переведено автоматически
Ответ 1

Переключатель --target - это то, что вы ищете:

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

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


-t, --target <dir>
Установите пакеты в <dir> . По умолчанию это не приведет к замене существующих файлов / папок в <dir>.
Используйте --upgrade для замены существующих пакетов в <dir> новыми версиями.



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

В Linux или OS X:

pip install -U pip

В Windows (это позволяет обойти проблему):

python -m pip install -U pip
Ответ 2

Использовать:

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

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

Ответ 3

Вместо опций --target или --install-options я обнаружил, что установка PYTHONUSERBASE переменной окружения работает хорошо (из обсуждения ошибки, касающейся именно этой вещи):

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 по-прежнему является лучшим и аккуратным решением!

Ответ 4

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

pip install mylibraryName -t . 

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

python pip