Я знаю, что этот вопрос задавали довольно много, но все приведенные решения мне не подходят.
Я запускаю это в venv с python 3.6.8 и django 2.2.10. Когда я запускаю django из cli, он работает, и все функции работают отлично, поэтому я знаю, что меня подводит не сам django.
Путь к скрипту wsgi: «/opt/sites/aws/okta/wsgi.py».
Фактический wsgi.py:
import os, sys
sys.path.append('/opt/sites/aws')
#path = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
#sys.path.append(path)
print(sys.path)
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "okta.settings")
from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()
При запуске python, чтобы увидеть, какие ошибки он дает, я получаю
ModuleNotFoundError: No module named 'okta.settings'
Я получаю ту же ошибку при запуске apache с ведением журнала отладки.
Я четырежды проверил путь и переменные среды, и они установлены правильно в сценарии wsgi.py.
Запрошено INSTALLED_APPS
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'okta_oauth2.apps.OktaOauth2Config',
'ops.apps.OpsConfig'
]
aws/
bin/
lib/
lib64/
logs/
okta/
__init__.py
urls.py
settings.py
wsgi.py
okta_oauth2/
ops/
share/
static/
manage.py
pyvenv.cfg
вы создали папку приложения okta
в django в соответствии с ошибкой, это говорит о том, что у вас нет этой папки okta
с файлом settings.py
или вы неправильно зарегистрировали приложение
В вопрос добавлен раздел INSTALLED_APPS. Да, это работало в течение нескольких месяцев до этого без проблем в той же структуре.
Хотя я так и не понял в чем дело. Это то, что я сделал, чтобы решить.
Примечание для тех, кто будет читать это в будущем, пожалуйста, НЕ делайте этого в первую очередь. Я попробовал другие, более распространенные результаты, такие как ImportError: No module named mysite.settings (Django), чтобы сначала решить проблему, и когда ничего не помогло, я попробовал это.
cd /opt/sites #Just outside the venv
sudo service httpd stop # stop web server
mv aws aws_broken_20201223 # move your broken env to a new name but do not delete
python3 -m venv aws #create new venv
cp -R aws_broken_20201223/(django dirs) aws/ #copy all the custom apps and project you have to the new folder
cd aws #go to the new install
bin/activate #activate your env
pip 3 install -r requirements.txt # I had a predefined requirements.txt for all mods I needed. I would suggest you do the same before doing this.
python3 okta/wsgi.py # Test to see if you are still getting the not found error
sudo service httpd start # start web server back up
вуаля, все работает без проблем, никаких изменений конфигурации. Очень странно но я возьму рабочий сайт то сломанный.
Можете ли вы поделиться своим INSTALLED_APPS в settings.py? Нам также нужна структура папок вашего пути из вашего проекта.