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"
Надеюсь, это поможет:)