Django wsgi modulenotfounderror: нет модуля с именем ‘project_name’

Как работает виртуальная среда?

Что именно имеется ввиду под «активировать» среду? Понимание того, что именно происходит под капотом, может быть очень важно для разработчика, особенно когда вам нужно понять выполнение виртуальной среды, разрешение зависимостей, и так далее. Чтобы объяснить, как это работает, для начала проверим расположения разных исполняемых файлов python

С «деактивированной» средой запускаем:

Чтобы объяснить, как это работает, для начала проверим расположения разных исполняемых файлов python. С «деактивированной» средой запускаем:

Shell

$ which python
/usr/bin/python

1
2

$which python

usrbinpython

Теперь активируем и снова запустим команду:

Python

$ source env/bin/activate
(env) $ which python
/Users/michaelherman/python-virtual-environments/env/bin/python

1
2
3

$source envbinactivate

(env)$which python

Usersmichaelhermanpython-virtual-environmentsenvbinpython

Активировав среду, мы теперь получаем другой путь к исполнимому файлу python, так как в активной среде, переменная среды $PATH несколько отличается.

Обратите внимание на разницу между первым путем в $PATH до и после активации:

Python

$ echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:

$ source env/bin/activate
(env) $ echo $PATH
/Users/michaelherman/python-virtual-environments/env/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:

1
2
3
4
5
6

$echo$PATH

usrlocalbinusrbinbinusrsbinsbin

$source envbinactivate

(env)$echo$PATH

Usersmichaelhermanpython-virtual-environmentsenvbinusrlocalbinusrbinbinusrsbinsbin

В последнем примере, каталог bin нашей виртуальной среды теперь находится в начале пути. Это значит, что это первый каталог в поиске, когда мы запускаем исполняемый файл в командной строке. Таким образом, оболочка использует экземпляр нашей виртуальной среды в Python, а не в системной версии.

Это наталкивает на вопросы:

  • В чем разница между этими исполняемыми файлами?
  • Каким образом виртуальная среда исполняемого файлаPython может использовать что-либо, кроме системных сайт-пакетов?

Это можно объяснить тем, как Python запускается и где он расположен в системе. Нет разницы между двумя исполняемыми файлами Python. Суть заключается в расположении каталога

Когда Python запускается, он ищет путь своего двоичного файла (в виртуальной среде он является копией или символической ссылке системного бинарного файла Python). Далее, он устанавливает расположение sys.prefix и sys.exec_prefix согласно с этим расположением, опуская часть bin в пути.

Путь, находящийся в sys.prefix далее используется для поиска каталога site-packages, путем поиска по связанного с ним пути lib/pythonX.X/site-packages/, где Х.Х – это версия используемого вами Python.

В нашем примере, бинарный файл расположен в /Users/michaelherman/python-virtual-environments/env/bin, это значит, что sys.prefix может быть /Users/michaelherman/python-virtual-environments/env, следовательно, используемый каталог site-packages может быть /Users/michaelherman/python-virtual-environments/env/lib/pythonX.X/site-packages. Наконец, этот путь наложен в массиве sys.path, который содержит все расположения, которые пакет может использовать.

11 ответов

Лучший ответ

Перемещение комментария в раздел ответов :)

Согласно Техническая поддержка Microsoft может быть проблема с параметрами политики выполнения. Чтобы это исправить, попробуйте выполнить в Power Power Shell.

NB: Не забудьте запустить Powershell от имени администратора.

71

Franklin Yu
17 Сен 2018 в 19:41

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

Вы можете просто открыть обычный (вам не нужен повышенный доступ) сеанс cmd или powershell (я использую встроенный PS-терминал в vscode) и набрать следующее из папки, где находится файл сценария, например: :

И после этого вы можете запустить команду .

Примечание. Это позволит запускать только этот конкретный скрипт и только зарегистрированному пользователю.

Elmo
6 Авг 2018 в 14:29

Чтобы установить виртуальную среду только в Windows Powershell, но для активации вам нужно запустить Windows powershell от имени Администратора .

Теперь он установлен, чтобы активировать его. Запустите PowerShell от имени администратора .

  1. Set-ExecutionPolicy Unrestricted -Force

Дезактивировать окружающую среду

Надеюсь, это поможет.

Для получения дополнительной помощи посетите официальную страницу https://pypi.org/project/virtualenv/1.8.2/

Amit Gupta
21 Сен 2018 в 11:23

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

  • Python 3.7
  • Windows 10 64bit
  • PowerShell

Надеюсь, что это может помочь: https://github.com/harrywang/self-contained-project/wiki/How-to-setup-Python-3-virtual-environment-on-Windows-10

harryw
15 Фев 2020 в 21:36

В Windows откройте Windows PowerShell от имени администратора

Создать виртуальную среду

1

Do Nhu Vy
13 Фев 2020 в 15:08

Установите ExcutionPolicy для области действия после Да , затем введите Сценарии / активировать

3

Franklin Yu
17 Сен 2018 в 19:40

Для меня в Windows 10 x64 — Откройте cmd от имени администратора — powershell — введите Set-ExecutionPolicy Unrestricted -Force

Вуаля, откройте VSCode и запустите pythoninnngg

Sami Kalamallah
11 Фев 2020 в 05:44

Следуйте этим шагам до последнего. Шаг 1. Используйте Windows PowerShell в качестве АДМИНИСТРАТОРА

(ОЧЕНЬ ВАЖНО) и перейдите в папку проекта. Бегать

Шаг 2. Проверьте в папке скриптов, есть ли у вас файл activ.bat

Шаг 3. Если его здесь нет, убедитесь, что у вас есть интернет-соединение, и запустите его снова.

Шаг 4. Если файл activ.bat находится в папке сценария, продолжайте. шаг 5. запустите это на вашей оболочке

Шаг 6. Чтобы активировать virtualenv в Windows, активируйте скрипт в папке Scripts:

Шаг 7 проверьте наличие (env) в начале каждой строки, это показывает, что вы находитесь в виртуальной среде

Шаг 8. Для повторной активации при повторном запуске проекта:

1

Ochieng’
12 Сен 2019 в 09:27

В использовании PowerShell

Вместо activ.bat, который больше не работает в powershell.

Также деактивировать, просто набрав

В командной строке

8

Matt N
1 Мар 2019 в 23:52

Если вы не хотите изменять политику выполнения вашего компьютера в Windows, как я, вы можете использовать командную строку Windows вместо Windows PowerShell, и просто нужно запустить {{Х0}} активировать вашу среду

ianNg
11 Ноя 2018 в 17:06

Другое быстрое решение, которое я нашел здесь (оно применимо только для Windows Powershell), выглядит следующим образом:

Первый забег

Тогда беги

На этой позиции ваш Virtualenv активирован. Теперь, если вы деактивируете его и захотите снова активировать позже в том же сеансе PowerShell, вам просто нужно запустить

В дальнейшем нет необходимости вводить команды cmd или activ.bat .

3

idmean
24 Сен 2019 в 11:59

11 ответов

Лучший ответ

Чтобы исправить мою проблему, я использовал следующую строку в моем .zprofile:

Я пытался импортировать Django, и он не мог быть найден, и выполнение вышеуказанного решило проблему.

10

Zach
23 Май 2015 в 05:06

Я решил эту проблему, установив Django в виртуальной среде, над которой я работал

-1

Moh moh
7 Май 2018 в 10:07

Исправлена та же проблема в моем проекте с использованием только;

Мне больше ничего не нужно было делать. Когда я бежал , все работало!

Kago
28 Янв 2019 в 07:27

Я обнаружил, что могу импортировать модуль django из интерпретатора python, но django-admin.py не может импортировать его при запуске из командной строки.

Я подтвердил, что использую интерпретатор python в моей виртуальной среде.

Я использовал 64-битную версию Python. Удаление и установка 32-битной версии, а затем воссоздание моего venv решило это для меня.

noodles
7 Июл 2017 в 20:17

Также убедитесь, что вы не испортили свои с . Вы получите такие ошибки, если содержит что-то вроде .

prusya
30 Сен 2016 в 14:41

Где находится ваш файл django, проверьте первую строку django-admin.py:

Если вы используете python 3+, здесь может ссылаться на python2 здесь. Так что проверьте, с каким питоном вы устанавливаете django.

Если у вас установлен python3 и он не связан как , измените первую строку shebang на

Izana
25 Июл 2016 в 18:04

Прямая проблема в том, что пакет django отсутствует. Для меня, когда я запускал django в virtualenv, эта проблема возникает после того, как я переименую свой рабочий каталог.

Переустановка ENV работал для меня.

1

SolessChong
20 Сен 2016 в 01:32

Эта ошибка связана с пользовательской средой. На самом деле, я просто добавляю путь к виртуальной среде в PATH, и проблема была решена.

1

M.kazem Akhgary
1 Окт 2015 в 09:49

Если вы используете и запускаете в системе Windows, cmd будет использовать системный python, а не python в virtualenv. Потому что если вы установите в системе, cmd будет автоматически использовать , установленный в системе, а не питон в . Так что, если вы используете в Windows. тебе нужно бежать

2

Ming
29 Окт 2016 в 05:58

Я столкнулся с той же проблемой, когда выполнил все настройки и запустил django с Python3, но выполнил следующую команду:

Исправлена проблема с использованием согласованной версии Python:

Другие команды, которые я запускал до этого:

3

Mona Jalal
20 Июн 2016 в 12:56

Я решил эту же ошибку, выполнив следующую команду:

И приведенная выше команда успешно выполнена для меня. Итак, вы можете попробовать, если вы используете Python 2.7, то просто замените 3.4 на 2.7. Надеюсь это поможет.

3

zenwraight
20 Апр 2016 в 22:12

Установка и создания окружения с virtualenv

Самый популярный пакет, который используется для создания виртуальных сред в Python, это virtualenv. Для его установки на Windows выполните:

Для установки на Linux системах, для Python 3, понадобится выполнить такую команду:

Если вы не будете использовать sudo, то в зависимости от версии ОС у вас появятся разные ошибки. В CentOS установка не выполнится вовсе, а в Ubuntu не будет добавлен путь в переменную окружения:

  • PermissionError: Permission denied: ‘/usr/local/lib/python3.6’
  • Command ‘virtualenv’ not found, but can be installed with: sudo apt install virtualenv

Далее, вне зависимости от того используете ли вы Linux или Windows, вы можете выполнить команду получения справки:

Я использую Python 3.6, и так я создам окружение в папке projectname/venv:

Способ выше устанавливает окружение относительно текущего пути. Если нужно установить на другом диске или каталоге, то можно использовать абсолютный путь. Так же не обязательно указывать параметр «-p» если вы используете одну версию Python. Вариант как это может быть сделано на Windows:

Само расположение виртуального окружения рекомендуется создавать в одной папке вместе разрабатываемым приложением. Такую структуру будет легче сопровождать. Я обычно придерживаюсь такой структуры:

Активация и выход из окружения

Для того что бы виртуальное окружения начало работать его нужно активировать. В разных ОС это делается по-разному.

В случаях с Linux указываем полный путь до venv/bin/activate:

Для активации в Windows, в папке venv\Scripts есть несколько файлов:

  • activate.ps1 — для активации через Powershell;
  • activate.bat — для активации через CMD.

Для активации просто укажите полный путь до файла. Например:

О том что вы находитесь в виртуальном окружении свидетельствуют следующие надписи:

Вы так же можете сравнить количество установленных пакетов внутри виртуального окружения с тем, что установлено вне:

Теперь вы можете устанавливать пакеты, которые будут работать только в этой среде.

Для выхода из окружения, за исключением запуска с помощью CMD, используйте команду:

Для CMD нужно указать путь до файла «venv\Scripts\deactivate.bat».

Создание виртуального окружения в Pycharm

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

Виртуальную среду можно создать при создании нового проекта. Для этого нужно зайти по следующему пути:

В новом окне выбрать название проекта, место для копирования, интерпретатор и нажать кнопку создания окружения:

Для настройки окружения для старых проектов нужно зайти в настройки:

Во вкладе «Python Interpreter» будет выбор из существующих интерпретаторов (1). Либо можно создать новый (2):

Управление средами через virtualenvwrapper

Если вы создаете множество виртуальных сред, например для тестирования в разных версиях Python, вы можете использовать virtualenvwrapper. Этот пакет представляет собой надстройку для virtualenv для более удобной работы и устанавливается отдельно.

Благодаря этому пакету мы сможем запускать ваши окружения так:

Для Windows нужно установить следующий пакет:

Для Linux нужно так же использовать sudo:

Настройки для Linux

Virtualenvwrapper хранит все окружения в одном месте. Это место определяется через переменную WORKON_HOME в Linux и по умолчанию равно директории ‘/home/пользователь/.virtualenvs’. Если вы хотите изменить это расположение — выполните команду экспорта с нужным путем:

Следующая команда добавит скрипты в домашний каталог для удобной работы:

При выполнении предыдущей команды у меня появилась ошибка:

virtualenvwrapper.sh: There was a problem running the initialization hooks. If Python could not import the module virtualenvwrapper.hook_loader

Она исправилась добавлением переменной в env с путем до нужного интерпретатора:

Настройки для Windows

Все виртуальные среды, которые будут созданы, по умолчанию будут располагаться по пути «C:\Users\%USERNAME%\Envs». Если вам нужно изменить расположение, то создайте переменную WORKON_HOME с нужной директорией:

Важный момент, в случае с Windows, команды virtualenvwrapper не будут выполняться Powershell. Команды работают только через CMD.

Основные команды

Далее мы можем использовать следующие команды (основные):

  • mkvirtualenv — создание окружения;
  • lsvirtualenv — отображение списка окружений;
  • rmvirtualenv — удаление;
  • workon — переключение между виртуальными средами;
  • deactivate — выход из текущего окружения.

Так мы создадим виртуальную среду:

Так выйдем из созданной среды:

Активация окружения:

Если нужно использовать другую версию Python:

Получение справки:

Виртуальные окружения

Решение очевидно — у каждого проекта должен быть свой интерпретатор Python,
со своей собственной изолированной директорией . Это и есть
основная идея, стоящая за виртуальными окружениями. Виртуальное окружение —
это самостоятельная копия интерпретатора со своими пакетами.

Как создавать виртуальные окружения

Начиная с Python версии 3.5 (на данный момент это самая старая из официально
поддерживаемых версий языка, так что справедливо ожидать, что как минимум
везде установлен Python 3.5 или новее), создать виртуальное окружение стало
очень просто:

Например, допустим, что мы работаем над проектом :

Создавать виртуальное окружения рядом с кодом — это распространённая практика,
так проще ничего не перепутать, но вообще виртуальное окружение может быть
где угодно, и директория тоже может называться как угодно

Обратите внимание,
что если вы создаете виртуальное окружение в директории под управлением
системы контроля версий (git), то его не нужно коммитить.
Лучше вообще добавьте его () в

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

то в виртуальном окружении будет та же самая версия:

Активируем окружение

Посмотрим, что внутри директории :

Обратите внимание, что в директории есть некий файл в
нескольких вариантах для разных шеллов. Это и есть «точка входа» в виртуальное
окружение

Просто создать виртуальное окружение мало, нужно его активировать.
Но сначала проверим, какие и (исполняемые файлы) используются
в обычном режиме работы:

Это мой обычный Python, вне виртуального окружения, назовём его глобальным.
Теперь активируем виртуальное окружение:

Для Windows процесс активации будет отличаться (допустим, что виртуальное окружение
создано в ):

Обратите внимание, что приветствие шелла изменилось (добавилось ), чтобы
показать, что мы «внутри» виртуального окружения под названием. Теперь проверим еще раз, какие и используются:

Теперь проверим еще раз, какие и используются:

Посмотрите на пути — мы внутри виртуального окружения! Теперь можно смело
устанавливать любые пакеты, и это никак не повлияет на глобальный Python или
на другие виртуальные окружения:

Можно запускать любые файлы, и они будут иметь доступ к установленным пакетам:

IDE тоже нужно настроить, указав путь к внутри виртуального
окружения, тогда редактор сможет лучше вам помогать.

По завершению работы с виртуальным окружением можно просто набрать ,
либо закрыть окно терминала:

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

Виртуальное окружение можно полностью удалить, когда оно перестанет быть
нужным:

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

Вот так можно работать с виртуальными окружениями в Python. Всегда устанавливайте
зависимости проектов только в изолированные виртуальные окружения. Не смешивайте
зависимости разных проектов в одном окружении.

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

Рейтинг
( Пока оценок нет )
Понравилась статья? Поделиться с друзьями:
Все про сервера
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: