Использование 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
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 но это не работает для меня.
вы можете указать конкретные версия Python при создании среды.
Это упоминается в virtualenv.pyvirtualenv --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. Он показывает шаги для различных платформ, но основные шаги являются
- установить python3.x (если нет) для вашей платформы
- установить python3.x-devel для вашей платформы
- создать виртуальную среду в python 3.икс (например $ python3. 6-m venv virenv_test_p3/)
- активируйте testenvironment для python 3.икс (например источник virenv_test_p3 / bin / activate)
- установите пакеты, которые вы хотите использовать в новой виртуальной среде python 3 и которые поддерживаются ( например pip install Django==1.11.2)
Я получил ту же ошибку из-за того, что это конфликт с установкой miniconda3, поэтому, когда вы набираете "which virtualenv", и если вы установили miniconda, и это указывает на эту установку, вы можете либо удалить ее (если вы любите меня и еще не перешли к ней), либо изменить переменную среды, чтобы указать на нужную вам установку.
для тех из вас, кто использует pipenv и хотите установить конкретную версию:
pipenv install --python 3.6
Comments