Использование 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
784   19  

19 ответов:

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

virtualenv -p python3 envname

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

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

pip install --upgrade virtualenv

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

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

pyvenv /path/to/new/virtual/environment

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

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

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

установите необходимые компоненты.

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.

Я пробовал 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 но это не работает для меня.

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

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

вы можете указать конкретные версия 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)

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

$ python3 -m venv .env

Python теперь поставляется со своей собственной реализацией виртуальной среды, по имени "venv". Я предложил бы использовать, что вместо того, чтобы виртуальное окружение.

цитирую venv-docs,

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

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

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

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

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

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

для активации или вызова venv вам нужно:

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

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

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

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

здесь - это простой способ, чтобы обойти это.

cd Workspace\Scripts
.\Activate.ps1
code .

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

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

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

which virtualenv

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

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

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

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

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

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

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

это сработало для меня

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

для тех, у кого возникли проблемы при работе с 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

Я пробовал все вышеперечисленные вещи, это все еще не сработало. Так что, как грубая сила, я просто переустановил анаконду, переустановил 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$ 

Я хотел сохранить 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. Он показывает шаги для различных платформ, но основные шаги являются

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

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

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

pipenv install --python 3.6

Comments

    Ничего не найдено.