Virtualenv не использует правильную версию Python

Я работаю в Amazon Cloud9.

ec2-user:~/environment/flask_init $ python -V
Python 2.7.14
ec2-user:~/environment/flask_init $ virtualenv -p python3 venv
Running virtualenv with interpreter /usr/bin/python3
Using base prefix '/usr'
New python executable in /home/ec2-user/environment/flask_init/venv/bin/python3
Also creating executable in /home/ec2-user/environment/flask_init/venv/bin/python
Installing setuptools, pip, wheel...done.
ec2-user:~/environment/flask_init $ source venv/bin/activate
(venv) ec2-user:~/environment/flask_init $ python -V
Python 2.7.14

Почему виртуальная среда не использует Python 3?

Обратите внимание, что этот вопрос не является дубликатом этого. Проблема заключалась в том, как среда Cloud 9 устанавливает псевдоним Python.

3 ответа

Решение

Я попробовал ваш поток на моей машине, и все работает, как ожидалось.

dluzak@Karol-PC:/tmp$ python -V
Python 2.7.12
dluzak@Karol-PC:/tmp$ virtualenv -p python3 venv
Already using interpreter /usr/bin/python3
Using base prefix '/usr'
New python executable in /tmp/venv/bin/python3
Also creating executable in /tmp/venv/bin/python
Installing setuptools, pkg_resources, pip, wheel...done.
dluzak@Karol-PC:/tmp$ source venv/bin/activate
(venv) dluzak@Karol-PC:/tmp$ python -V
Python 3.5.2
(venv) dluzak@Karol-PC:/tmp$ 

Тем не менее я лично использую virtualenv как модуль при создании venv с python 3: python3 -m virtualenv venv, Может быть, это будет работать.

Вы предоставили очень мало деталей. Вы установили virtualenv для Python 2 и 3? Вы уверены, что интерпретатор Python 3 работает нормально?

Вот как я создаю virtualenv на Cloud9

Python 3.4

$ sudo pip install virtualenv
$ virtualenv -p /usr/bin/python3.4 venv
$ source venv/bin/activate

Python 3.6

$ sudo apt update
$ sudo apt install python3.6-venv
$ python3.6 -mvenv venv
$ source venv/bin/activate

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

Вместо того, чтобы активировать мою среду как это:

source activate

Я обнаружил, что активация этого так на самом деле работает:

source ./activate

Надеюсь, что это полезно!

Я столкнулся с подобной проблемой. В моем случае не сработало, потому что я переместил виртуальную папку env (но то же самое происходит, когда вы ее переименовываете).

Вы можете понять, какая версия python (и, следовательно, какой модуль будет импортировать) используется, набрав

$ which python

Если напишите что-то вроде:

/usr/bin/python

Тогда это означает, что ваша виртуальная среда не активируется.
Чтобы решить эту проблему, вместо создания новой виртуальной среды вы можете просто отредактировать файл активации скрипта в своем env:

$ nano venv/bin/activate

И отредактируйте следующую строку, указав свой абсолютный путь к вашей виртуальной среде:

VIRTUAL_ENV="/YOUR_ABSOLUT/PATH_TO/venv"

Надеюсь, это поможет:)

Другие вопросы по тегам