#python #virtualenv
#python #virtualenv
Вопрос:
Я установил новую среду pyvenv со следующими командами:
python3.4 -m venv env
source env/bin/activate
Однако, когда я вызываю which pip
, я получаю следующее: /usr/bin/pip
. По-видимому, все еще используется общесистемная установка pip. Если я посмотрю на документацию pyvenv, в ней указано следующее:
Изменено в версии 3.4: устанавливает pip по умолчанию, добавлены опции —without-pip и —copies
И это правильно, при попытке установить pip в моей активированной среде я получаю следующее:
Требования уже обновлены: pip в ./env/local /lib /python3 .4 / dist-пакетах
Как мне убедиться, что при вызове pip в моей активированной среде вызывается pyvenv pip?
Комментарии:
1. @CollinAnderson Это не дает никакой реакции.
Ответ №1:
Похоже, что вы (и я в моем предыдущем ответе) наблюдали последствия ошибки. Кажется, все работает в более новых версиях pyvenv-3.4.
$ pwd
~/test
$ pyvenv-3.4 myenv
$ source myenv/bin/activate
(myenv)$ which pip
~/test/myenv/bin/pip
Ответ №2:
У меня возникла аналогичная проблема, я задал свой веб-хостинг (WebFaction) и получил отличный ответ. Страница понимания pyvenv и pip в виртуальных средах с python 3.4 и выше кратко изложена ниже.
Кажется, вам не нужно беспокоиться о том, какой pip использует ваша виртуальная среда. Пока ваша виртуальная среда активна, в ней будут установлены любые пакеты, независимо от того, какой pip используется.
Одна особенность виртуальных сред Python 3.4 заключается в том, что если пакет не поддерживает новый формат пакета «колесо» Python, пакет не будет установлен внутри каталога виртуальной среды. Однако он все равно будет поддерживать соединение с виртуальной средой.
Из-за этой странности я решил просто использовать virtualenv вместо pyvenv-3.4, и все работало так, как ожидалось.
Ответ №3:
Проблема была исправлена в Ubuntu 14.10.
И если вы установили python 3.4 с помощью следующей команды на Centos6.
yum install http://dl.iuscommunity.org/pub/ius/stable/CentOS/6/x86_64/python34u-3.4.2-1.ius.centos6.x86_64.rpm
Вы должны повторно открыть новый терминал (или повторно войти в свою систему).
У меня это работает. Удачи.