Использование Python 3 в virtualenv

Используя virtualenv, я запускаю свои проекты с версией Python (2.7) по умолчанию. В одном проекте мне нужно использовать Python 3.4.

Я использовал brew install python3 для установки на моем Mac. Теперь, как мне создать virtualenv, который использует новую версию?

например. sudo virtualenv envPython3

Если я попробую:

virtualenv -p python3 test

Я получаю:

Running virtualenv with interpreter /usr/local/bin/python3
Using base prefix '/usr/local/Cellar/python3/3.4.0_1/Frameworks/Python.framework/Versions/3.4'
New python executable in test/bin/python3.4
Also creating executable in test/bin/python
Failed to import the site module
Traceback (most recent call last):
  File "/Users/user/Documents/workspace/test/test/bin/../lib/python3.4/site.py", line 67, in <module>
    import os
  File "/Users/user/Documents/workspace/test/test/bin/../lib/python3.4/os.py", line 634, in <module>
    from _collections_abc import MutableMapping
ImportError: No module named '_collections_abc'
ERROR: The executable test/bin/python3.4 is not functioning
ERROR: It thinks sys.prefix is '/Users/user/Documents/workspace/test' (should be '/Users/user/Documents/workspace/test/test')
ERROR: virtualenv is not compatible with this system or executable

Ответ 1

просто запустите

virtualenv -p python3 envname

Обновление после редактирования OP:

В OP версии virtualenv произошла ошибка, описанная здесь здесь. Проблема была устранена при запуске:

pip install --upgrade virtualenv

Ответ 2

Python 3 имеет встроенную поддержку виртуальных сред - venv. Возможно, лучше использовать это. Ссылаясь на документы:

Создание виртуальных сред осуществляется путем выполнения pyvenv script:

pyvenv /path/to/new/virtual/environment

Обновление для Python 3.6 и новее:

Как pawciobiel правильно комментарии, pyvenv есть устарел с Python 3.6, и новый способ:

python3 -m venv /path/to/new/virtual/environment

Ответ 3

Установить предпосылки.

sudo apt-get install python3 python3-pip virtualenvwrapper

Создайте виртуальную среду на основе Python3. При желании включите --system-site-packages.

mkvirtualenv -p /usr/bin/python3 <venv-name>

Установить в виртуальную среду.

workon <venv-name>

Установите другие требования, используя менеджер пакетов pip.

pip install -r requirements.txt
pip install <package_name>

При одновременной работе с несколькими проектами Python обычно рекомендуется устанавливать общие пакеты, такие как pdbpp глобально, а затем повторно использовать их в virtualenvs.

Использование этого метода экономит много времени, затрачиваемого на выборку пакетов и их установку, за исключением использования минимального дискового пространства и пропускной способности сети.

sudo -H pip3 -v install pdbpp
mkvirtualenv -p $(which python3) --system-site-packages <venv-name>

Джанго конкретные инструкции

Если существует много общесистемных пакетов Python, то рекомендуется не использовать --system-site-packages особенно во время разработки, так как я заметил, что это сильно замедляет запуск Django. Я предполагаю, что инициализация среды Django - это сканирование вручную и добавление всех пакетов сайта по системному пути, что может быть причиной. Даже python manage.py shell становится очень медленным.

Сказав тот эксперимент, какой вариант работает лучше. Может быть безопасно просто пропустить --system-site-packages для проектов Django.

Ответ 4

I'v попробовал pyenv, и это очень удобно для переключения версий python (глобальных, локальных в папке или в virtualenv):

brew install pyenv

затем установите нужную версию Python:

pyenv install 3.5.0

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

virtualenv -p /Users/johnny/.pyenv/versions/3.5.0/bin/python3.5 myenv

Что это, проверьте версию:

. ./myenv/bin/activate && python -V

Есть также плагин для pyenv pyenv-virtualenv, но это не сработало для меня как-то.

Ответ 5

virtualenv --python=/usr/bin/python3 <name of env>

работал у меня.

Ответ 6

Вы можете указать конкретную версию Python при создании среды.
Это упомянуто в virtualenv.py

virtualenv --python=python3.5 envname

В некоторых случаях это должен быть полный путь к исполняемому файлу:

virtualenv --python=/Users/username/.pyenv/versions/3.6.0/bin/python3.6 envname

Как работает -p

parser.add_option(
    '-p', '--python',
    dest='python',
    metavar='PYTHON_EXE',
    help='The Python interpreter to use, e.g., --python=python3.5 will use the python3.5 '
    'interpreter to create the new environment.  The default is the interpreter that '
    'virtualenv was installed with (%s)' % sys.executable)

Ответ 7

У меня было такое же сообщение ERROR. Решение tbrisker в моем случае не работало. Вместо этого это решило проблему:

$ python3 -m venv .env

Ответ 8

В дополнение к другим ответам, я рекомендую проверить, какой экземпляр virtualenv вы выполняете:

which virtualenv

Если это что-то появляется в /usr/local/bin, то возможно - даже, вероятно, что вы установили virtualenv (возможно, используя экземпляр easy_tools или pip) без использования диспетчера системных пакетов (brew в OP дело). Это была моя проблема.

Несколько лет назад - когда я был еще более невежественным - я установил virtualenv, и он маскировал мой системный пакет, предоставленный virtualenv.

После удаления старого, сломанного virtualenv, мои проблемы исчезли.

Ответ 9

Теперь Python имеет собственную реализацию виртуальной среды под названием "venv". Я бы предложил использовать это вместо virtualenv.

Цитата из venv - docs,

Устаревший с версии 3.6: pyvenv был рекомендованным инструментом для создание виртуальных сред для Python 3.3 и 3.4 и устарел в Python 3.6.

Изменено в версии 3.5: Использование venv теперь рекомендуется для создание виртуальных сред.

Для окон, чтобы инициировать venv в каком-либо проекте, откройте cmd:

python -m venv "c:\path\to\myenv"

(Предлагает использовать двойную цитату вокруг пути каталога, если она содержит любые пробелы. Ex: "C:/My Dox/Spaced Directory/Something" )

Как только venv настроен, вы увидите несколько новых папок внутри вашего каталога проектов. Одним из них будет "Сценарии".

Для активации или вызова venv вам необходимо:

C:\> <venv>\Scripts\activate.bat

Вы можете деактивировать виртуальную среду, введя "деактивировать" в своей оболочке. С этим вы теперь готовы к установке ваших конкретных проектов, которые будут находиться в папке "Lib".

============================== Редактирование 1 ============= ======================= Сценарий, который будет обсуждаться ниже, не является тем, что первоначально было задано, просто добавив это, если кто-то использует vscode с расширением python

В случае, если вы используете vs-код с расширением python, у вас может возникнуть проблема с его пилингом, который указывает на глобальную установку. В этом случае pylint не сможет увидеть модули, установленные в вашей виртуальной среде, и, следовательно, будет показывать ошибки при импорте.

Здесь - простой способ преодолеть это.

cd Workspace\Scripts
.\Activate.ps1
code .

Мы в основном активируем среду сначала, а затем вызываем vs-код, так что pylint запускается внутри среды и может видеть все локальные пакеты.

Ответ 10

В python3.6 я пробовал python3 -m venv myenv согласно документации, но это python3 -m venv myenv так много времени. Таким образом, очень простая и быстрая команда - это python -m venv yourenv Это сработало для меня на python3.6.

Ответ 11

На Mac я должен был сделать следующее, чтобы заставить его работать.

mkvirtualenv --python=/usr/bin/python3 YourEnvNameHere

Ответ 12

Если вы установите python3 (brew install python3) вместе с virtualenv burrito, вы можете сделать mkvirtualenv -p $(which python3) env_name

Конечно, я знаю, что virtualenv burrito - это всего лишь обертка, но за эти годы он отлично меня обслуживал, уменьшая некоторые кривые обучения.

Ответ 13

virtualenv --python=/usr/local/bin/python3 <VIRTUAL ENV NAME> это добавит python3  путь для вашего виртуального окружения.

Ответ 14

Он работал у меня

virtualenv --no-site-packages --distribute -p /usr/bin/python3 ~/.virtualenvs/py3

Ответ 15

Для тех, у кого есть проблемы при работе с Anaconda3 (Python 3).

Вы можете использовать

conda create -n name_of_your_virtualenv python=python_version 

Чтобы активировать среду (Linux, MacOS)

source activate name_of_your_virtualenv

Для Windows

activate name_of_your_virtualenv

Ответ 16

Я пробовал все вышеперечисленные вещи, это все еще не сработало. Так как грубая сила, я просто переустановил anaconda, снова установил virtualenv... и это сработало.

Amans-MacBook-Pro:~ amanmadan$ pip install virtualenv
You are using pip version 6.1.1, however version 8.1.2 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.
Collecting virtualenv
  Downloading virtualenv-15.0.3-py2.py3-none-any.whl (3.5MB)
    100% |████████████████████████████████| 3.5MB 114kB/s 
Installing collected packages: virtualenv
Successfully installed virtualenv-15.0.3
Amans-MacBook-Pro:python amanmadan$ virtualenv my_env
New python executable in /Users/amanmadan/Documents/HadoopStuff/python/my_env/bin/python
Installing setuptools, pip, wheel...done.
Amans-MacBook-Pro:python amanmadan$ 

Ответ 17

Я хотел сохранить версию python 2.7.5 как версию по умолчанию на Centos 7, но имеет python 3.6.1 в виртуальной среде, работающей рядом с другими виртуальными средами в python 2.x

Я нашел ссылку ниже лучшим решением для новейшей версии python (python 3.6.1) https://www.digitalocean.com/community/tutorial_series/how-to-install-and-set-up-a-local-programming-environment-for-python-3. Он показывает шаги для разных платформ, но основные шаги

  • Установите python3.x(если нет) для вашей платформы.
  • Установите python3.x-devel для вашей платформы.
  • Создание виртуальной среды в python 3.x(например, $python3.6 -m venv virenv_test_p3/)
  • Активировать тестовую среду для python 3.x(например, источник virenv_test_p3/bin/activate)
  • Установите пакеты, которые вы хотите использовать в своей новой виртуальной среде python 3 и которые поддерживаются (например, pip install Django == 1.11.2)

Ответ 18

Для тех из вас, кто использует pipenv и хочет установить определенную версию:

pipenv install --python 3.6

Ответ 19

Это все, что вам нужно для запуска виртуальной среды в python/python3

Сначала убедитесь, что у вас есть virtualenv, а теперь

Бежать:

virtualenv -p python3 <env name>

Иногда происходит сбой, просто используйте это:

python3 -m virtualenv <env_name>  # you can specify full path instead <env_name> to install the file in a different location other than the current location

Чтобы запустить это:

source <env_name>/bin/activate

Или же:

source 'pwd'/<env_name>/bin/activate

Запустить (для выхода):

deactivate 

Ответ 20

Я получил ту же ошибку из-за того, что это был конфликт с установкой miniconda3, поэтому, когда вы вводите "какой virtualenv", и если вы установили miniconda и указали на эту установку, вы можете либо удалить ее (если вы, как я, и гавань пока не переместился к нему) или измените переменную среды, чтобы указать на нужную вам установку.