активация virtualenv не работает

Я создал виртуальную среду с:

$ virtualenv my_ven_test

затем давайте активируем среду с помощью:

$ source my_ven_test/bin/activate

теперь давайте установим пакет:

(my_ven_test) $ pip install mysql-connector==2.1.3

Эта последняя строка не вступает в силу. На самом деле, если я проверю:

(my_ven_test) $ pip freeze

Я не вижу установленного пакета (а также каталог my_ven_test/lib/python/site-package не содержит пакет mysql-connector)

Не могли бы вы подсказать мне в решении этого вопроса?

Некоторые примечания:

  • версия питона: 2.7
  • виртуальная версия: 15.1.0

person enneppi    schedule 16.01.2018    source источник
comment
это (my_ven_test) $ pip freeze верно?   -  person jojo    schedule 17.01.2018
comment
Да, это. я изменил сообщение. Благодарность   -  person enneppi    schedule 17.01.2018
comment
Вы переместили/переименовали свой venv после его создания? Если это так, этот вопрос может пролить свет на проблему. Может быть полезно проверить, что вывод which pip указывает на исполняемый файл pip в каталоге virtualenv. Если нет, у вас могут возникнуть проблемы с переменной окружения PATH.   -  person sytech    schedule 17.01.2018
comment
Что выводит echo $PATH из virtualenv?   -  person heemayl    schedule 17.01.2018
comment
Вы уже обновили пипс с помощью pip install --upgrade pip?   -  person abautista    schedule 17.01.2018
comment
@AlejandroBR да требования уже обновлены   -  person enneppi    schedule 17.01.2018
comment
@heemayl это вывод /home/hadoop/my_ven_test/bin:/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/opt/aws/ мусорное ведро   -  person enneppi    schedule 17.01.2018
comment
путь в первой строке my_ven_test/bin/pip указывает на правильный питон? тогда является ли путь в my_ven_test/bin/activate строке 42 или около того правильным путем к вашему virtualenv? если вы переместили свой virtualenv, верните его туда, где вы его создали, и запустите virtualenv --relocatable my_ven_test, после чего вы сможете переместить его снова.   -  person jojo    schedule 17.01.2018
comment
@jojo да обоим. я не двигал виртуалэнв   -  person enneppi    schedule 17.01.2018
comment
PATH выглядит нормально для меня ... Возможно ли, что вы установили pip после создания virtualenv? Убедитесь, что исполняемый файл pip действительно присутствует в каталоге /bin venv. Если это там, то вывод which pip должен быть похож на /home/hadoop/my_ven_test/bin/pip Я бы рекомендовал, ради здравомыслия, попытаться создать еще один virtualenv и посмотреть, возникает ли у вас та же проблема. Имейте в виду, что вы не хотите переименовывать/перемещать свой venv после его создания.   -  person sytech    schedule 17.01.2018
comment
@sytech уже проверил. вроде все нормально (после создания virtualenv установки не было)   -  person enneppi    schedule 17.01.2018
comment
pip install mysql-connector==2.1.3 выполнился без ошибок? когда я запускаю его в новом venv, он терпит неудачу.   -  person jojo    schedule 17.01.2018
comment
@jojo выполняется без ошибок. имейте в виду, что это только тест. вы также можете использовать pip install numpy   -  person enneppi    schedule 17.01.2018
comment
: P я сначала установил numpy с ожидаемым поведением и появился в freeze. Для меня нет очевидных недостатков в вашей настройке, поэтому мой вопрос.   -  person jojo    schedule 17.01.2018
comment
Я всегда просто запускаю python -m pip, так как обычно у меня много установок Python и виртуалок. pip должен работать сразу после установки, но указание интерпретатора Python вручную всегда должно работать.   -  person Alexander Huszagh    schedule 17.01.2018
comment
@AlexanderHuszagh нет разницы с python -m pip   -  person enneppi    schedule 17.01.2018
comment
mysql-connector не создает mysql-connector в site-packages, он создает каталоги mysql и mysqlx плюс библиотеки _mysql_connector.so и _mysqlxpb.so. Попробуйте pip show mysql-connector.   -  person phd    schedule 17.01.2018
comment
@phd У меня нет вывода с pip show mysql-connector. То же самое, если я наберу pip install pandas. mysql-connector это просто пример   -  person enneppi    schedule 17.01.2018
comment
Кто-то предложил посмотреть на вывод which pip, но я его здесь не вижу. Что вы получите от which pip, echo $VIRTUAL_ENV и pwd после активации venv?   -  person Nathan Vērzemnieks    schedule 21.01.2018
comment
О, вот еще вопрос: это происходит с любой виртуальной средой, которую вы создаете, или только с этой?   -  person Nathan Vērzemnieks    schedule 21.01.2018
comment
Я бы также запросил вывод для pip -V и python -V внутри venv. В вопросе предоставлено недостаточно информации. Кроме того, журнал от pip install somepkg -vvv часто бывает полезен.   -  person hoefling    schedule 21.01.2018
comment
Предоставьте консольный вывод pip install mysql-connector==2.1.3   -  person sureshvv    schedule 24.01.2018


Ответы (3)


Забудьте о virtualenv, используйте новый Pipenv, который является рекомендовано Python.org


Pipenv автоматически создает виртуальную среду для вашего проектов, а также добавляет/удаляет пакеты из вашего Pipfile (подробнее об этом ниже) при установке/удалении пакетов.


Сначала установите pipenv, используя:

$ pip install pipenv

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

$ mkdir myproject
$ cd myproject

# install `requests` library
$ pipenv install requests

# install more libraries required for your project
$ pipenv install mysql-connector
$ pipenv install numpy

Это создаст два файла, а именно Pipfile и Pipfile.lock. Вы можете найти список всех установленных пакетов для текущего проекта в файле Pipfile, а Pipfile.lock содержит информацию о хэшах, таких как sha256, для всех установленных пакетов и их зависимостей.


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

$ pipenv shell

который запустит подоболочку в виртуальной среде. (Это делает аналогичную работу source /your/virtualenv/activate)

Затем вы можете начать кодирование. Например, вы можете сначала проверить, нормально ли работают установленные пакеты, запустив оболочку Python и импортировав пакеты, как показано ниже:

$ python
>>> import requests
# ....

Чтобы выйти из оболочки (virtualenv), просто выполните:

$ exit

Теперь вы находитесь вне виртуальной среды, созданной pipenv.

Узнайте больше об этом установке пакетов для вашего проекта @ pipenv .kennethreitz.org

person kmario23    schedule 24.01.2018
comment
Я нашел это интригующим. К сожалению, с любым (новым или существующим) проектом я получаю это - pip.exceptions.InstallationError: Command "python setup.py egg_info" failed with error code 1 in /tmp/tmp13ba53__build/mysqlclient/. Какие именно пути он ищет в файле requirements.txt? Пишет, что находит файл requirements.txt даже в совершенно пустой папке. - person addohm; 24.01.2018
comment
@Jaberwocky Конечно!! попробуйте проверить его с помощью pipenv lock -r, чтобы получить файл requirements.txt. - person kmario23; 24.01.2018
comment
Я не хочу. Я хочу предотвратить автоматическое обнаружение pipenv install. Он видит файл requirements.txt при запуске из пустой папки. - person addohm; 24.01.2018
comment
@Jaberwocky, это странно. Возможно, вы можете сообщить о проблеме здесь: github.com/pypa/pipenv/issues - person kmario23; 24.01.2018

Попробуйте установить пакет без активации virtualenv:

# Install it
my_ven_test/bin/pip install mysql-connector==2.1.3
# Use grep to check if exists
my_ven_test/bin/pip list | grep mysql-connector

Если это сработает, попробуйте активировать virtualenv, запустив этот код:

. my_ven_test/bin/activate

Попробуйте установить другой пакет

pip install flake8

После этого найдите эти два пакета

pip list | grep mysql-connector
pip list | grep flake8

Сообщите мне результат.

person b4oshany    schedule 24.01.2018

Когда вы находитесь внутри venv, вы должны использовать следующее для установки пакета:

py -m pip install mysql-connector==2.1.3

-m гарантирует, что пакет установлен в ваш venv, а не в ваш корневой python

person scottapotamus    schedule 28.02.2020