Я пытаюсь разместить свое локальное веб-приложение на pythonanywhere. [ Новичок в Django и веб-разработке ]
При запуске приложения я столкнулся со следующей ошибкой:
Error running WSGI application
2021-04-26 21:46:32,020: ModuleNotFoundError: No module named 'myapp'
2021-04-26 21:46:32,020: File "/var/www/username_pythonanywhere_com_wsgi.py", line 16, in <module>
2021-04-26 21:46:32,020: application = get_wsgi_application()
2021-04-26 21:46:32,020:
2021-04-26 21:46:32,020: File "/home/username/.virtualenvs/web-virtualenv/lib/python3.8/site-packages/django/core/wsgi.py", line 12, in get_wsgi_application
2021-04-26 21:46:32,020: django.setup(set_prefix=False)
2021-04-26 21:46:32,020:
2021-04-26 21:46:32,020: File "/home/username/.virtualenvs/web-virtualenv/lib/python3.8/site-packages/django/__init__.py", line 19, in setup
2021-04-26 21:46:32,021: configure_logging(settings.LOGGING_CONFIG, settings.LOGGING)
2021-04-26 21:46:32,021:
2021-04-26 21:46:32,021: File "/home/username/.virtualenvs/web-virtualenv/lib/python3.8/site-packages/django/conf/__init__.py", line 82, in __getattr__
2021-04-26 21:46:32,021: self._setup(name)
2021-04-26 21:46:32,021:
2021-04-26 21:46:32,021: File "/home/username/.virtualenvs/web-virtualenv/lib/python3.8/site-packages/django/conf/__init__.py", line 69, in _setup
2021-04-26 21:46:32,021: self._wrapped = Settings(settings_module)
2021-04-26 21:46:32,021:
2021-04-26 21:46:32,021: File "/home/username/.virtualenvs/web-virtualenv/lib/python3.8/site-packages/django/conf/__init__.py", line 170, in __init__
2021-04-26 21:46:32,021: mod = importlib.import_module(self.SETTINGS_MODULE)
Расположение файлов:
Файл settings.py находится по адресу:
/home/username/WebDev/Website/Django/MyApp/myapp/myapp
Я изменил файл ‘/var/www/username_pythonanywhere_com_wsgi.py’ как:
"""
WSGI config for myapp project.
It exposes the WSGI callable as a module-level variable named ``application``.
For more information on this file, see
https://docs.djangoproject.com/en/3.2/howto/deployment/wsgi/
"""
import os
import sys
sys.path.append("/home/username/WebDev/Website/Django/MyApp/myapp")
os.environ('DJANGO_SETTINGS_MODULE', 'myapp.settings')
from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()
Я посмотрел на аналогичный вопрос о stackoverflow, но до сих пор не могу понять, что не так с моей стороны.
Любые указатели / помощь будут оценены.
2 ответа
Лучший ответ
Ошибка устранена.
Проблема заключалась в том, что среда — это не функция, а параметр процесса, и, следовательно, ее использование, как показано ниже, было причиной ошибки.
os.environ('DJANGO_SETTINGS_MODULE', 'myapp.settings')
Я изменил код на:
os.environ['DJANGO_SETTINGS_MODULE'] = 'myapp.settings'
И ошибка была решена.
0
Ishita
30 Апр 2021 в 21:59
Судя по всему, структура папок в порядке.
Что вам может потребоваться, так это добавить модуль в свой INSTALLED_APPS
в настройках.
Или, если вы получаете ошибку импорта или ошибку «модуль не найден» для чего-то, что, по вашему мнению, установлено, значит, вы, вероятно, установили его в версию Python или virtualenv, в которой не выполняется ваш код. Если это часть ваш код не найден, значит, ваш путь Python не настроен так, чтобы он видел модуль, который вы пытаетесь импортировать. См. https://help.pythonanywhere.com/pages/DebuggingImportError/.
0
TryingMahBest
27 Апр 2021 в 12:49
У меня проблема
ModuleNotFoundError: No module named 'sorl'
Я установил его и попробовал еще раз.
(env) PS path> pip install sorl-thumbnail
Requirement already satisfied: sorl-thumbnail in pathenvlibsite-packages (12.8.0)
Django запускается с активированным env. Модуль был установлен с активированным env. Я также попытался установить модуль без виртуального окружения.
Он также добавлен в Installed_Apps
...
'simple_history',
'widget_tweaks',
'sorl.thumbnail',
]
Есть советы? 🙄
Full Traceback:
Exception in thread django-main-thread:
Traceback (most recent call last):
File "C:Program FilesWindowsAppsPythonSoftwareFoundation.Python.3.9_3.9.2800.0_x64__qbz5n2kfra8p0libthreading.py", line 973, in _bootstrap_inner
self.run()
File "C:Program FilesWindowsAppsPythonSoftwareFoundation.Python.3.9_3.9.2800.0_x64__qbz5n2kfra8p0libthreading.py", line 910, in run
self._target(*self._args, **self._kwargs)
File "c:UsersdDesktopSHenvlibsite-packagesdjangoutilsautoreload.py", line 64, in wrapper
fn(*args, **kwargs)
File "c:UsersdDesktopSHenvlibsite-packagesdjangocoremanagementcommandsrunserver.py", line 110, in inner_run
autoreload.raise_last_exception()
File "c:UsersdDesktopSHenvlibsite-packagesdjangoutilsautoreload.py", line 87, in raise_last_exception
raise _exception[1]
File "c:UsersdDesktopSHenvlibsite-packagesdjangocoremanagement__init__.py", line 375, in execute
autoreload.check_errors(django.setup)()
File "c:UsersdDesktopSHenvlibsite-packagesdjangoutilsautoreload.py", line 64, in wrapper
fn(*args, **kwargs)
File "c:UsersdDesktopSHenvlibsite-packagesdjango__init__.py", line 24, in setup
apps.populate(settings.INSTALLED_APPS)
File "c:UsersdDesktopSHenvlibsite-packagesdjangoappsregistry.py", line 91, in populate
app_config = AppConfig.create(entry)
File "c:UsersdDesktopShenvlibsite-packagesdjangoappsconfig.py", line 224, in create
import_module(entry)
File "C:Program FilesWindowsAppsPythonSoftwareFoundation.Python.3.9_3.9.2800.0_x64__qbz5n2kfra8p0libimportlib__init__.py", line 127, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "<frozen importlib._bootstrap>", line 1030, in _gcd_import
File "<frozen importlib._bootstrap>", line 1007, in _find_and_load
File "<frozen importlib._bootstrap>", line 972, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 228, in _call_with_frames_removed
File "<frozen importlib._bootstrap>", line 1030, in _gcd_import
File "<frozen importlib._bootstrap>", line 1007, in _find_and_load
File "<frozen importlib._bootstrap>", line 984, in _find_and_load_unlocked
ModuleNotFoundError: No module named 'sorl'
Вернуться на верх
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and
privacy statement. We’ll occasionally send you account related emails.
Already on GitHub?
Sign in
to your account
Comments
Hi, I am still not able to resolve this with django rest framework and centos 7 and python 3.6 .This is my django.conf
WSGIScriptAlias / /venv/core/core/wsgi.py
WSGIPythonHome /venv
WSGIPythonPath /venv/core/core
<Directory /venv/core/core>
<Files wsgi.py>
Require all granted
</Files>
</Directory>
WSGIDaemonProcess core python-path=/venv/core/core/ python-home=/venv
WSGIProcessGroup core
This is my wsgi.py file in django project repo :
import os,sys
exec(open("/venv/bin/activate_this.py").read(), {'__file__': "/venv/bin/activate_this.py"})
sys.path.append('/venv/core/core')
sys.path.append('/venv/lib/python3.6/site-packages')
from django.core.wsgi import get_wsgi_application
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "ipan_core.settings")
application = get_wsgi_application()
Error log files :
[mpm_prefork:notice] [pid 22418] AH00163: Apache/2.4.6 (CentOS) mod_wsgi/4.6.4 Python/3.6 configured -- resuming normal operations
[Wed May 02 10:31:34.054712 2018] [core:notice] [pid 22418] AH00094: Command line: '/usr/sbin/httpd -D FOREGROUND'
[Wed May 02 10:31:36.514895 2018] [wsgi:error] [pid 22419] [remote 125.63.68.155:27751] mod_wsgi (pid=22419): Failed to exec Python script file ''.
[Wed May 02 10:31:36.514941 2018] [wsgi:error] [pid 22419] [remote 125.63.68.155:27751] mod_wsgi (pid=22419): Exception occurred processing WSGI script '
[Wed May 02 10:31:36.515136 2018] [wsgi:error] [pid 22419] [remote 125.63.68.155:27751] Traceback (most recent call last):
[Wed May 02 10:31:36.515159 2018] [wsgi:error] [pid 22419] [remote 125.63.68.155:27751] File "", line 37, in <module>
[Wed May 02 10:31:36.515181 2018] [wsgi:error] [pid 22419] [remote 125.63.68.155:27751] from django.core.wsgi import get_wsgi_application
[Wed May 02 10:31:36.515215 2018] [wsgi:error] [pid 22419] [remote 125.63.68.155:27751] ModuleNotFoundError: No module named 'django'
When you activate the Python virtual environment from the command line and run python
, what do you get when you enter:
import sys
print(sys.prefix)
Please don’t modify the paths you give me. You appear to have done that in the configuration snippets you gave me as they don’t match what the log is showing for the WSGI script file path. It makes it impossible to validate whether you are using the correct paths.
Also, what do you get for:
import django
print(django.__file__)
Python 3.6.4 (default, Dec 19 2017, 14:48:12)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-16)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> print(sys.prefix)
/ipan_env
>>> import django
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ModuleNotFoundError: No module named 'django'
>>> print(django.__file__)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'django' is not defined
>>>
Which says that Django hasn’t even been installed in the virtual environment. Once you have it installed, then you should use /ipan_env
as the value for WSGIPythonHome
and python-home
.
But when i use sudo from command line , django gets imorted. Is it a permission issue?
My Project run fine when i use sudo python3.6 manage.py runserver
but gives import error without using sudo.
Do not create your virtual environment as root
using sudo
. Also do not install packages into it as root
using sudo
. The user that Apache runs your code as will not be able to access stuff if root
applies restrictive permissions. Is also a bad idea to install stuff directly under /
directory.
Create a directory something like /var/www/project
. Change the ownership to you. Put in that directory the virtual environment and your project code with everything owned by you. Directories and files need to be accessible to other users so that the Apache user can access it. Install packages into the virtual environment as you. Set up mod_wsgi to use your project from that location.
Always run python manage.py runserver
during development as you, never as root
.
After giving proper permissions its fixed and working.
Thanks man!
I have to apologies… but I just cant get this right… I am probably reading over the correct answer
I went through many… many.. google articles and this one seems to be the closest to my problem. Please … if you can help me
my apache2 sites-available lenwsgi.conf
lenwsgi.conf.txt
now my wsgi.py path = /home/kallie/ftp/files/AI
wsgi .txt
the apache2 error log
apache2_error_log.txt
my file structure
my python ( main environment )
python virtual environment (env)
django stuff
Thank you in advance
Len
uwsgi —python-version
maybe you mean
uwsgi —version
After giving proper permissions its fixed and working.
Thanks man!
What was the permission you give?
-
#1
Выгружаю сайт на heroku, но при его просмотре выходит ошибка — Application error.
Более детально:
Код:
ModuleNotFoundError: No module named 'MySite'
at=error code=H10 desc="App crashed"
Procfile:
Код:
web: gunicorn MySite.wsgi --log-file -
Как мне исправить ошибку? Приложение в Procfile указано верно.
-
#6
Попробуйте указать в Procfile
полный путь к wsgi-файлу
:
Код:
web: gunicorn папка_проекта.приложение_с_wsgi.wsgi --log-file
или сначала перейти в папку с проектом, а потом запустить gunicorn
с wsgi
:
Код:
web: sh -c 'cd папка_проекта && gunicorn приложение_с_wsgi.wsgi --log-file'
-
#2
Как мне исправить ошибку? Приложение в Procfile указано верно
Попробуйте заменить MySite.wsgi
на название_проекта.wsgi
. Название проекта — это имя папки в которой лежит файл wsgi.py
.
-
#3
Попробуйте заменить
MySite.wsgi
наназвание_проекта.wsgi
.
Не вышло.
Однако теперь в ошибке папка указывается с «.wsgi»
ModuleNotFoundError: No module named ‘{название проекта}.wsgi’
-
#4
Не вышло.
Однако теперь в ошибке папка указывается с «.wsgi»
Возможно у вас файлы проекта (manage.py
и другие) находятся не в корневой папке и соответственно путь к файлу название_проекта/wsgi.py
тоже другой.
-
#5
Возможно у вас файлы проекта (
manage.py
и другие) находятся не в корневой папке и соответственно путь к файлуназвание_проекта/wsgi.py
тоже другой.
Вот моя структура:
Возможно, Procfile и requirement должны быть внутри проекта, но тогда возникнут ошибки еще при развертывании сайта.
Последнее редактирование: Янв 28, 2022
-
#7
Попробуйте указать в
Procfile
полный путь кwsgi-файлу
:Код:
web: gunicorn папка_проекта.приложение_с_wsgi.wsgi --log-file
или сначала перейти в папку с проектом, а потом запустить
gunicorn
сwsgi
:Код:
web: sh -c 'cd папка_проекта && gunicorn приложение_с_wsgi.wsgi --log-file'
Это сработало, спасибо! Однако, чтобы не было ошибок:
web: sh -c ‘cd папка_проекта && gunicorn приложение_с_wsgi.wsgi —log-file=-‘
В Python может быть несколько причин возникновения ошибки ModuleNotFoundError: No module named ...
:
- Модуль Python не установлен.
- Есть конфликт в названиях пакета и модуля.
- Есть конфликт зависимости модулей Python.
Рассмотрим варианты их решения.
Модуль не установлен
В первую очередь нужно проверить, установлен ли модуль. Для использования модуля в программе его нужно установить. Например, если попробовать использовать numpy без установки с помощью pip install будет следующая ошибка:
Traceback (most recent call last):
File "", line 1, in
ModuleNotFoundError: No module named 'numpy'
Для установки нужного модуля используйте следующую команду:
pip install numpy
# или
pip3 install numpy
Или вот эту если используете Anaconda:
conda install numpy
Учтите, что может быть несколько экземпляров Python (или виртуальных сред) в системе. Модуль нужно устанавливать в определенный экземпляр.
Конфликт имен библиотеки и модуля
Еще одна причина ошибки No module named — конфликт в названиях пакета и модуля. Предположим, есть следующая структура проекта Python:
demo-project
└───utils
__init__.py
string_utils.py
utils.py
Если использовать следующую инструкцию импорта файла utils.py, то Python вернет ошибку ModuleNotFoundError
.
>>> import utils.string_utils
Traceback (most recent call last):
File "C:demo-projectutilsutils.py", line 1, in
import utils.string_utils
ModuleNotFoundError: No module named 'utils.string_utils';
'utils' is not a package
В сообщении об ошибке сказано, что «utils is not a package». utils — это имя пакета, но это также и имя модуля. Это приводит к конфликту, когда имя модуля перекрывает имя пакета/библиотеки. Для его разрешения нужно переименовать файл utils.py.
Иногда может существовать конфликт модулей Python, который и приводит к ошибке No module named.
Следующее сообщение явно указывает, что _numpy_compat.py в библиотеке scipy пытается импортировать модуль numpy.testing.nosetester
.
Traceback (most recent call last):
File "C:demo-projectvenv
Libsite-packages
scipy_lib_numpy_compat.py", line 10, in
from numpy.testing.nosetester import import_nose
ModuleNotFoundError: No module named 'numpy.testing.nosetester'
Ошибка ModuleNotFoundError
возникает из-за того, что модуль numpy.testing.nosetester
удален из библиотеки в версии 1.18. Для решения этой проблемы нужно обновить numpy и scipy до последних версий.
pip install numpy --upgrade
pip install scipy --upgrade