Как использовать pip по умолчанию для установки пакетов python на конкретный виртуальный сервер

Как использовать pip для установки программного обеспечения на конкретный виртуальный сервер извне virtualenv.

Например, если у меня есть virtualenv / home / guest / virtualenv / django-env, Как установить пакеты python в /home/guest/virtualenv/django-env/lib/python2.7/site-packages/, не выполняя source / home / guest / virtualenv / django-env / bin / activate и используя пип по умолчанию, доступный в / usr / local / bin / pip

Контекст таков: я выполняю удаленную установку программного обеспечения с использованием фабрики, и когда я использую фабрику, я не могу сохранить вновь созданный виртуальный env. Следовательно, чтобы иметь возможность устанавливать программное обеспечение в новый virtualenv, мне нужно запустить пип по умолчанию (/ usr / local / bin / pip) за пределами virtualenv


person binithb    schedule 03.07.2013    source источник
comment
вы используете сценарий начальной загрузки? Если да, то вставьте.   -  person Babu    schedule 03.07.2013


Ответы (2)


Вам не нужно исходить virtualenv, чтобы использовать его. Просто установите пакет, выполнив пип, установленный в virtualenv: /home/guest/virtualenv/django-env/bin/pip install <package>

Вы также можете в более ранней версии pip запустить pip в другом virtualenv, чем тот, в котором он установлен с pip -E, например:

pip -E /home/guest/virtualenv/django-env/

Но это действительно не имеет преимуществ по сравнению с вышеперечисленным и может вызвать ошибки, поэтому первый вариант все же лучше.

person Lennart Regebro    schedule 03.07.2013
comment
Ему / ей необходимо запустить пип по умолчанию (/ usr / local / bin / pip). Хотя я не уверен в ограничениях. - person Babu; 03.07.2013
comment
@Babu: Нет, OP думает (s), что ему нужно запустить пип по умолчанию, поскольку OP думает, что он (он) не может запустить его в virtualenv, не активировав его предварительно. Это недоразумение. - person Lennart Regebro; 03.07.2013
comment
Это сработало, я думаю, что я упустил очевидное, но ничего очевидного, пока кто-нибудь не скажет вам, что это очевидно :), спасибо @LennartRegebro за решение реальной проблемы, а не за немедленное решение (с использованием пипа по умолчанию). Это было именно то, что я хотел - person binithb; 04.07.2013

До pip 1.1 была опция -E для установки пакеты внутри виртуальной среды без переключения, как вы,

pip install -E /path/to/env <package>

Но согласно журналу изменений,

Удален параметр среды -E / - и PIP_RESPECT_VIRTUALENV; оба используют механизм перезапуска в venv, который сломан, и ни один из них бесполезен, поскольку теперь в каждом virtualenv есть pip. Замените pip -E path / to / venv install Foo на virtualenv path / to / venv && path / to / venv / pip install Foo.

Итак, если у вас есть pip до версии 1.1, вам повезло использовать глобальный pip.

person Babu    schedule 03.07.2013
comment
Во-первых, я он (как бы важно) :). Мое решение было тем, что указал Леннарт Регебро. Но мои поиски решения начались с опции -E (у меня был код, который ее использует, и он не работал с моим pip (v 1.3). Спасибо @babu за указание деталей. - person binithb; 04.07.2013