Как запустить виртуальное окружение в vs code
Перед началом работы с Django нам естественно надо установить интерпретатор Python. Подоробнее об этом можно почитать здесь.
Существуют разные способы установки Django. Рассмотрим рекомендуемый способ.
Пакетный менеджер pip
Пакеты Django размещаются в центральном репозитории для большинства пакетов Python — Package Index (PyPI). И для установки из этого репозитория нам потребуется пакетный менеджер pip . Менеджер pip позволяет загружать пакеты и управлять ими. Обычно при установке python также устанавливается и менеджер pip. В этом случае мы можем проверить версию менеджера, выполнив в командной строке/терминале команду pip -V (V — с заглавной буквы):
C:\Users\eugen>pip -V pip 22.0.4 from C:\Users\eugen\AppData\Local\Programs\Python\Python310\lib\site-packages\pip (python 3.10) C:\Users\eugen>
Если pip не установлен, то мы увидим ошибку типа
"pip" не является внутренней или внешней командой, исполняемой программой или пакетным файлом
В этом случае нам надо установить pip. Для этого можно выполнить в командной строке/консоли следующую команду:
python -m ensurepip --upgrade
Если pip ранее уже был установлен, то можно его обновить с помощью команды
pip install --upgrade pip
Установка виртуальной среды
Виртуальная среда или venv не является неотъемлимой частью разработки на Django. Однако ее рекомендуется использовать, так как она позволяет создать множество виртуальных сред Python на одной операционной системе. Благодаря виртуальной среде приложение может запускаться независимо от других приложений на Python.
В принципе можно запускать приложения на Django и без виртуальной среды. В этом случае все пакеты Django устанавливаются глобально. Однако что если после создания первого приложения выйдет новая версия Django? Если мы захотим использовать для второго проекта новую версию Django, то из-за глобальной установки пакетов придется обновлять первый проект, который использует старую версию. Это потребует некоторой дополнительной работы по обновлению, так как не всегда соблюдается обратная совместимость между пакетами. Если мы решим использовать для второго проекта старую версию, то мы лишиемся потенциальных преимуществ новой версии. И использование виртуальной среды как раз позволяет разграничить пакеты для каждого проекта.
Для работы с виртуальной средой в python применяется встроенный модуль venv
Итак, создадим вируальную среду. Вначале определим каталог для проектов django. Например, пусть это будет каталог C:\django . Прежде всего перейдем в терминале/командной строке в этот каталог с помощью команды cd.
cd C:\django
Затем для создания виртуальной среды выполним следующую команду:
python -m venv .venv
Модулю venv передается название среды, которая в данном случае будет называться «.venv». Для наименования виртуальных сред нет каких-то определенных условностей. Пример консольного вывода:
C:\Users\eugen>cd C:\djangoПереход к папке будущей виртуальной среды C:\django>python -m venv .venvСоздание виртуальной среды C:\django>
После этого в текущей папке (C:\django) будет создан подкаталог «.venv».
Активация виртуальной среды
Для использования виртуальную среду надо активировать. И каждый раз, когда мы будем работать с проектом Django, связанную с ним виртуальную среду надо активировать . Например, активируем выше созданную среду, которая располагается в текущем каталоге в папке .venv. Процесс активации немного отличается в зависимости от операционной системы и от того, какие инструменты применяются. Так, в Windows можно использовать командную строку и PowerShell, но между ними есть отличия.
Активация в Windows в коммандной строке
Если наша ОС — Windows, то в папке .venv/Scripts/ мы можем найти файл activate.bat ), который активирует виртуальную среду. Так, в Windows активация виртуальной среды в коммандной строке будет выглядеть таким образом:
.venv\Scripts\activate.bat
Активация в Windows в PowerShell
Также при работе на Windows в папке .venv/Scripts/ мы можем найти файл activate.ps1 , который также активирует виртуальную среду, но применяется только в PowerShell. Но при работе с PowerShell следует учитывать, что по умолчанию в этой оболочке запрещено применять скрипты. Поэтому перед активацией среды необходимо установить разрешения для текущего пользователя. Поэтому для активации виртуальной среды в PowerShell необходимо выполнить две следующих команды:
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser .venv\Scripts\Activate.ps1
Активация в Linux и MacOS
Для Linux и MacOS активация будет производиться с помощью следующей команды:
source .venv/bin/activate
Далее я буду приводить примеры на основе командной строки Windows, однако все остальные примеры не будут зависеть от того, что используется — PowerShell или командная строка, Windows, Linux или MacOS. В любом случае после успешной активации слева от текущего каталога мы увидим в скобках название виртуальной среды:
C:\Users\eugen>cd C:\django C:\django>python -m venv .venv C:\django>.venv\Scripts\activate.batАктивация виртуальной среды (.venv) C:\django> Виртуальная среда активирована
Установка Django
После активации виртуальной среды для установки Django выполним в консоли следующую команду
python -m pip install Django
Она устанавливает последнюю версию Django.
(.venv) C:\django>python -m pip install Django Collecting Django Using cached Django-4.1-py3-none-any.whl (8.1 MB) Collecting sqlparse>=0.2.2 Using cached sqlparse-0.4.2-py3-none-any.whl (42 kB) Collecting tzdata Using cached tzdata-2022.1-py2.py3-none-any.whl (339 kB) Collecting asgiref=3.5.2 Using cached asgiref-3.5.2-py3-none-any.whl (22 kB) Installing collected packages: tzdata, sqlparse, asgiref, Django Successfully installed Django-4.1 asgiref-3.5.2 sqlparse-0.4.2 tzdata-2022.1 (.venv) C:\django>
Если нам интересует конкретная версия Django, то мы можем указать ее при установке:
python -m pip install django~=4.0.0
Проверка установки
Чтобы убедиться, что все установлено правильно, мы можем перейти к интерпретатору python. Для этого введем в терминале команду
python
И затем выполним последовательно следующие две инструкции:
>>> import django >>> print(django.get_version())
Консольный вывод в моем случае:
(.venv) C:\django>python Python 3.10.1 (tags/v3.10.1:2cd268a, Dec 6 2021, 19:10:37) [MSC v.1929 64 bit (AMD64)] on win32 Type "help", "copyright", "credits" or "license" for more information. >>> import django >>> print(django.get_version()) 4.1 >>>
Деактивация виртуальной среды
После окончания работы с виртуальной средой мы можем ее деактивировать с помощью команды:
Python. Виртуальное окружение в Windows
Виртуальное окружение в Python — способ изолировать зависимости (пакеты) для определённого проекта.
Создание виртуального окружения
Создаётся через модуль venv, который идёт в поставке Python 3.
Используется команда «python −m venv» и название директории, в которой будет создано виртуальное окружение.
Использование:
Для активации окружение надо запустить скрипт activate.bat внутри директории с виртуальным окружением. Затем выполнить необходимые операции, допустим установить пакет. По окончанию работы запусить скрипт deactivate.bat .
Допустим, окружение создано в директории e:\home\python\project\.
Почему VS code не может установить виртуальное окружение?
Но терминал Vs code отвечает словом Python, ничего не делая. Как можно это исправить? Мне можно как нибудь установить библиотеку без этого окружения?
- Вопрос задан 06 нояб. 2022
- 473 просмотра
4 комментария
Простой 4 комментария
Герман Коффман @Gera01 Автор вопроса
Борис Алексеев, пробовал. Пишет Python и ничего больше не происходит.
python -m venv venv .\venv\Scripts\activate pip instal .
Герман Коффман @Gera01 Автор вопроса
serhiops, мне нужно установить библиотеку telebot. Соответсвенно я пишу
python -m venv venv
.\venv\Scripts\activate
pip install telebot
python -m venv venv
C:\GoTo\Shop\venv\Scripts\activate
pip install telebot
в любом случае кидает ошибку, как не пиши.
Герман Коффман @Gera01 Автор вопроса
Герман Коффман,
Решения вопроса 0
Ответы на вопрос 1
Сергей delphinpro @delphinpro
frontend developer
Ну так укажите полный путь к pip.exe
Или добавьте этот каталог в системный PATH
Ответ написан 07 нояб. 2022
Нравится 1 5 комментариев
Герман Коффман @Gera01 Автор вопроса
Это полный путь. У меня все скрипты лежат в папке C:\GoTo\Shop. А где pip.exe — я даже не знаю есть ли он у меня, я его не устанавливал, разве что как модуль для vs code.
Герман Коффман @Gera01 Автор вопроса
В консоле добавил в path командой set PYTHONPATH=%PYTHONPATH%;C:\GoTo\Shop, но ничего не поменялось.
Герман Коффман @Gera01 Автор вопроса
попробовал установить с помощью py -m pip install, а не pip install. Вроде установило все, но vs code модуля не видит. Пробовал перезагружать.
Консоль говорит следующее:
py -m pip install pyTelegramBotAPI
Requirement already satisfied: pyTelegramBotAPI in c:\users\яков\appdata\local\programs\python\python310\lib\site-packages (4.7.1)
Requirement already satisfied: requests in c:\users\яков\appdata\local\programs\python\python310\lib\site-packages (from pyTelegramBotAPI) (2.28.1)
Requirement already satisfied: certifi>=2017.4.17 in c:\users\яков\appdata\local\programs\python\python310\lib\site-packages (from requests->pyTelegramBotAPI) (2022.9.24)
Requirement already satisfied: urllib3=1.21.1 in c:\users\яков\appdata\local\programs\python\python310\lib\site-packages (from requests->pyTelegramBotAPI) (1.26.12)
Requirement already satisfied: charset-normalizer=2 in c:\users\яков\appdata\local\programs\python\python310\lib\site-packages (from requests->pyTelegramBotAPI) (2.1.1)
Requirement already satisfied: idna=2.5 in c:\users\яков\appdata\local\programs\python\python310\lib\site-packages (from requests->pyTelegramBotAPI) (3.4)
Сергей delphinpro @delphinpro
Герман Коффман, Полный путь к pip.exe. Я же об этом написал. И на моём скриншоте это видно.
Бинарник расположен в папке установки питона. В моём случае питон установлен в c:\python3\
Герман Коффман @Gera01 Автор вопроса
Сергей delphinpro, лежит он в
C:\Users\Яков\PycharmProjects\pythonProject1\venv\Scripts\pip.exe
После команды уже с указанным к нему путем он вроде бы что-то установил, но vs code его все равно не видит.
Python: установка virtualenv
Виртуальное окружение virtualenv — это инструмент, позволяющий создавать изолированные среды для отдельных проектов Python, решая тем самым проблему зависимостей и совместимости приложений разных версий. Подробнее о виртуальном окружении Python можно прочитать в официальной документации .
После установки virtualenv вы можете использовать pip для установки библиотек Python.
В зависимости от ваших задач установку можно выполнить в домашнюю директорию или в директорию конкретного сайта.
- Версии Python
- Установка в корень аккаунта
- Установка в конкретный каталог
- Использование PIP
- Основные команды pip
- Файл requirements.txt
- Восстановление виртуального окружения с помощью requirements.txt
- No module named ‘имя_модуля’
- Target WSGI script ‘/путь/до/скрипта/index.wsgi’ cannot be loaded as Python module
- DisallowedHost at / Invalid HTTP_HOST header
- AttributeError: module ‘MySQLdb.constants.FIELD_TYPE’ has no attribute ‘JSON’
- The SECRET_KEY setting must not be empty
Версии Python
По умолчанию на наших серверах доступны версии Python 2 и Python 3.6, но вы также можете использовать версию Python 3.5.
Проверить версии Python на сервере можно с помощью команд:
# Версии Python 2:
python -V
# Версии Python 3:
python3 -VВерсии Python обратно совместимы, то есть приложение, написанное на 3.6, скорее всего, будет работать под 3.7, и так далее. Однако не всегда код, написанный на новых версиях, будет корректно работать на старых версиях из-за возможного нового синтаксиса и функций языка. Также обратите внимание, что Python 2 и Python 3 несовместимы между собой.
При создании виртуального окружения нужно использовать корректное имя интерпретатора, в зависимости от нужной вам версии Python:
# Если требуется Python2:
python virtualenv.pyz venv
# Если требуется Python3.5:
python3.5 virtualenv.pyz venv
# Если требуется Python3.6:
python3.6 virtualenv.pyz venvТаким образом, при выполнении команды:
python3 virtualenv.pyz venv
окружение будет содержать интерпретатор Python3. Если вам нужна версия 2, то необходимо вызывать python :
python virtualenv.pyz venv
Обратите внимание, что в виртуальном окружении доступна только та версия Python 3 , которая была выбрана при создании виртуального окружения. Например, запустить скрипт через Python 3.5 в виртуальном окружении, созданном через Python 3.6, не получится:
(env) $ python3.5 --version
Command 'python3.5' not foundПри этом Python 2 будет доступен:
(env) $ python2 --version
Python 2.7.17Проверить версию Python в созданном виртуальном окружении можно командой:
(env) $ python --version
Python 3.6.9Установка в корень аккаунта
Установить одну из последних версий виртуального окружения в корень аккаунта можно по инструкции ниже.
- Скачать virtualenv , указав в команде нужную версию Python.
wget https://bootstrap.pypa.io/virtualenv/X.X/virtualenv.pyz
Например, для Python 3.6:
wget https://bootstrap.pypa.io/virtualenv/3.6/virtualenv.pyz
- Создать виртуальное окружение, используя нужную версию Python . Например:
# Если требуется Python3:
python3 virtualenv.pyz venv
# Если требуется Python2:
python virtualenv.pyz venvПри этом будет создана директория venv , из которой будет запускаться виртуальное окружение (имя директории можно задать любое).
- Активировать виртуальное окружение:
source venv/bin/activate
Далее вы можете приступить к установке библиотек с помощью pip . После отключить виртуальное окружение можно командой deactivate .
Установка в конкретный каталог
Если виртуальное окружение требуется для конкретного сайта , можно установить его в соответствующий каталог public_html :
- Перейти в нужный каталог (вместо u и user укажите первую букву логина и сам логин):
cd /home/u/user/директория_сайта/public_html
- Скачать virtualenv , указав нужную версию Python:
wget https://bootstrap.pypa.io/virtualenv/X.X/virtualenv.pyz
Например, для Python 3.6:
wget https://bootstrap.pypa.io/virtualenv/3.6/virtualenv.pyz
- Создать виртуальное окружение, используя нужную версию Python . Например:
# Если требуется Python 3:
python3 virtualenv.pyz venv
# Если требуется Python 2:
python virtualenv.pyz venvПри этом будет создана директория venv, из которой будет запускаться виртуальное окружение (имя директории можно задать любое).
- Активировать виртуальное окружение (вместо u и user укажите первую букву логина и сам логин):
source /home/u/user/директория_сайта/public_html/venv/bin/activate
Далее вы можете приступить к установке библиотек с помощью pip . После отключить виртуальное окружение можно командой deactivate .
Использование PIP
PIP — система управления пакетами для установки и управления программными пакетами на Python.
Основные команды pip
# Установка пакета
pip install имя_пакета
# Обновление пакета
pip install -U имя_пакета
# Удаление пакета
pip uninstall имя_пакета — удаление пакета
# Вывод установленных пакетов
pip freeze
# Просмотр версии pip
pip --version
# Обновление pip
pip install -U pipФайл requirements.txt
Файл содержит вывод команды pip freeze и является списком зависимостей, которые необходимо установить в виртуальное окружение для работы приложения.
Пример содержимого requirements.txt :
asgiref==3.4.1
Django==3.2.7
pytz==2021.1
sqlparse==0.4.2
typing-extensions==3.10.0.2- Django — имя пакета;
- 3.2.7 — версия пакета.
Вместо обозначения == может встретиться >= , что означает версию равную или выше.
Восстановление виртуального окружения с помощью requirements.txt
С помощью requirements.txt можно выполнить рекурсивную установку пакетов. В этом случае нет необходимости устанавливать пакеты вручную.
Выполнить установку можно командой:
pip install -r requirements.txt
Возможные ошибки
No module named ‘имя_модуля’
Ошибка сообщает о том, что импортируемый в коде модуль не установлен. Пример сообщения в логе об ошибке:
plain.webtm.ru [Tue Jul 07 06:18:52 2020] [error] [pid 74988] src/server/wsgi_logger.c(147): [client 5.16.118.157:33342] import pygame
plain.webtm.ru [Tue Jul 07 06:18:52 2020] [error] [pid 74988] src/server/wsgi_logger.c(147): [client 5.16.118.157:33342] ModuleNotFoundError: No module named 'pygame'Если вы уверены, что модуль установлен, но ошибка все равно возникает, необходимо проверить корректность путей в файле index.wsgi и указать в скрипте корректный путь до интерпретатора Python.
Например, если виртуальное окружение было установлено в директорию /mysite/public_html , в начало скрипта необходимо добавить строку:
#!/home/u/user/mysite/public_html/venv/bin/python3.6
Также следует убедиться, что используется нужная версия пакетов или самого Python.
Target WSGI script ‘/путь/до/скрипта/index.wsgi’ cannot be loaded as Python module
Возникает при неправильной настройке файла index.wsgi .
Необходимо сверить файл с инструкциями по ссылкам: Django , Flask .
DisallowedHost at / Invalid HTTP_HOST header
Для устранения ошибки необходимо указать доменное имя в качестве переменной в файле /имя_проекта/settings.py , например:
ALLOWED_HOSTS = ['example.com']
Для работы сайта от любого домена нужно указать символ * :
ALLOWED_HOSTS = ['*']
AttributeError: module ‘MySQLdb.constants.FIELD_TYPE’ has no attribute ‘JSON’
Необходимо обновить mysqlclient командой:
pip install -U mysqlclient
The SECRET_KEY setting must not be empty
Нужно проверить корректность указанного имени модуля настроек в wsgi-скрипте или наличие SECRET_KEY в файле settings.py .
Пример сообщения об ошибке в логе:
Jan 28 02:12:27 vh328 apache_error[58945]: ce05390-django.tw1.ru [Thu Jan 28 02:12:27 2021] [error] [pid 35894] src/server/wsgi_logger.c(147): [client 188.163.65.63:37230] django.core.exceptions.ImproperlyConfigured: The SECRET_KEY setting must not be empty.