Ошибка импорта Django 1.9 Apache django.core.handlers.wsgi ImportError: нет модуля с именем «django»

Я пытаюсь развернуть свой проект Django на apache. Но я получаю ошибку 500response. И в логах я получаю информацию о том, что Django отсутствует. Я использую virtualenv для запуска этого проекта. Это первый раз, когда я пытаюсь развернуть проект Django. И по своему опыту я знаю, что, вероятно, упустил какую-то простую вещь. Я искал решения на этом сайте, но они предназначены для предыдущих версий Django и python. Они не работают для меня.

Это мой Apache test.conf

WSGIScriptAlias / /home/mariusz/Dokumenty/Projekty/zalien/zalien/wsgi.py 
WSGIDaemonProcess localhost python-path=/home/mariusz/Dokumenty/Projekty/zalien:/home/mariusz/Dokumenty/Projekt/envy/lib/python3.5/site-packages

<Directory /home/mariusz/Dokumenty/Projekty/zalien/zalien>
<Files wsgi.py>
Require all granted
</Files>
</Directory>

Это мой wsgi.py

import os
import sys
import site
from django.core.wsgi import get_wsgi_application
application = django.core.handlers.wsgi.WSGIHandler()

# Add the site-packages of the chosen virtualenv to work with
site.addsitedir('/home/mariusz/Dokumenty/Projekty/envy/local/lib/python3.5/site-packages')


# Add the app's directory to the PYTHONPATH
sys.path.append('/home/mariusz/Dokumenty/Projekty/zalien')
sys.path.append('/home/mariusz/Dokumenty/Projekty/zalien/zalien')

os.environ['DJANGO_SETTINGS_MODULE'] = 'zalien.settings'

# Activate your virtual env
activate_env=os.path.expanduser("/home/mariusz/Dokumenty/Projekty/envy/bin/activate_this.py")
exec(activate_env, dict(__file__=activate_env))

Журнал ошибок

[Mon May 16 09:44:28.368084 2016] [wsgi:error] [pid 7418:tid 139640747427584] mod_wsgi (pid=7418): Call to 'site.addsitedir()' failed for '(null)', stopping.
[Mon May 16 09:44:28.368132 2016] [wsgi:error] [pid 7418:tid 139640747427584] mod_wsgi (pid=7418): Call to 'site.addsitedir()' failed for '/home/mariusz/Dokumenty/Projekty/zalien/'.
[Mon May 16 09:44:28.369458 2016] [wsgi:error] [pid 7418:tid 139640747427584] [client 127.0.0.1:37494] mod_wsgi (pid=7418): Target WSGI script '/home/mariusz/Dokumenty/Projekty/zalien/zalien/wsgi.py' cannot be loaded as Python module.
[Mon May 16 09:44:28.369493 2016] [wsgi:error] [pid 7418:tid 139640747427584] [client 127.0.0.1:37494] mod_wsgi (pid=7418): Exception occurred processing WSGI script '/home/mariusz/Dokumenty/Projekty/zalien/zalien/wsgi.py'.
[Mon May 16 09:44:28.369724 2016] [wsgi:error] [pid 7418:tid 139640747427584] [client 127.0.0.1:37494] Traceback (most recent call last):
[Mon May 16 09:44:28.369752 2016] [wsgi:error] [pid 7418:tid 139640747427584] [client 127.0.0.1:37494]   File "/home/mariusz/Dokumenty/Projekty/zalien/zalien/wsgi.py", line 23, in <module>
[Mon May 16 09:44:28.369758 2016] [wsgi:error] [pid 7418:tid 139640747427584] [client 127.0.0.1:37494]     from django.core.wsgi import get_wsgi_application
[Mon May 16 09:44:28.369781 2016] [wsgi:error] [pid 7418:tid 139640747427584] [client 127.0.0.1:37494] ImportError: No module named 'django'

Разрешения

-rw-rw-r-- 1 mariusz www-data   295 May  9 14:50 app.json
-rw-rw-r-- 1 mariusz www-data 51200 May 13 09:53 db.sqlite3
drwxrwxr-x 4 mariusz www-data  4096 May 13 10:06 games
-rwxrwxr-x 1 mariusz www-data   249 May  9 14:50 manage.py
drwxrwxr-x 4 mariusz www-data  4096 May 13 10:06 portal
-rw-rw-r-- 1 mariusz www-data    39 May  9 14:50 Procfile
-rw-rw-r-- 1 mariusz www-data    45 May  9 14:50 Procfile.windows
-rw-rw-r-- 1 mariusz www-data  1368 May  9 14:50 README.md
-rw-rw-r-- 1 mariusz www-data   298 May  9 14:50 requirements.txt
-rw-rw-r-- 1 mariusz www-data    13 May  9 14:50 runtime.txt
drwxrwxr-x 5 mariusz www-data  4096 May  9 14:50 static
drwxrwxr-x 4 mariusz www-data  4096 May  9 14:50 templates
drwxrwxr-x 4 mariusz www-data  4096 May 13 10:06 userprofile
drwxrwxr-x 3 mariusz www-data  4096 May 16 11:50 zalien

person Mariusz Łaszewski    schedule 16.05.2016    source источник
comment
Возможный дубликат конфигурации django apache с неработающим WSGIDaemonProcess   -  person e4c5    schedule 19.07.2016


Ответы (2)


У меня есть несколько серверов Apache с django, и мне было больно их настраивать. Итак, минимальная рабочая конфигурация со статическими файлами:

WSGIPythonPath /home/mariusz/Dokumenty/Projekty/zalien

<VirtualHost *:80>
    WSGIScriptAlias / /home/mariusz/Dokumenty/Projekty/zalien/zalien/wsgi.py

    <Directory /home/mariusz/Dokumenty/Projekty/zalien/zalien>
        <Files wsgi.py>
            Require all granted
        </Files>
    </Directory>

    # Django static files, here you must specify your own path's
    Alias /static/ /var/www/djangointra/static/
    <Directory "/var/www/djangointra/static">
        Require all granted
    </Directory>
</VirtualHost>

Также вы не должны изменять файлы wsgi.py в своих проектах django. Конфигурации Apache достаточно для запуска вашего веб-сервера.

ИЗМЕНИТЬ: wsgi.py

"""
WSGI config for djago_api 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/1.9/howto/deployment/wsgi/
"""

import os

from django.core.wsgi import get_wsgi_application

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "djago_api.settings")

application = get_wsgi_application()
person valex    schedule 16.05.2016
comment
Можете ли вы вставить файл wsgi.py по умолчанию. Мой выглядит как import os os.environ.setdefault("DJANGO_SETTINGS_MODULE", "zalien.settings") from django.core.wsgi import get_wsgi_application from whitenoise.django import DjangoWhiteNoise application = get_wsgi_application() application = DjangoWhiteNoise(application) И я все еще получаю ту же ошибку - person Mariusz Łaszewski; 16.05.2016
comment
@MariuszŁaszewski да :). Смотреть РЕДАКТИРОВАТЬ. - person valex; 16.05.2016
comment
Все так же, как вы можете видеть выше. - person Mariusz Łaszewski; 16.05.2016
comment
@MariuszŁaszewski проверьте права доступа к файлу и права доступа к пути к файлу. Я имею в виду, что ваш веб-сервер должен иметь возможность читать файл «/home/mariusz/Documenty/Projekty/zalien/zalien/wsgi.py». Если вы используете Linux, убедитесь, что у вас есть o+rx в каждом каталоге на вашем пути и o+r для файла wsgi.py. - person valex; 16.05.2016
comment
Как Вы можете видеть выше. Я даю всем им + x - person Mariusz Łaszewski; 16.05.2016
comment
И мой '-rwxrwxr-x 1 mariusz www-data 913 16 мая 11:50 wsgi.py' - person Mariusz Łaszewski; 16.05.2016
comment
Полный путь получил +rx? Я имею в виду каждый каталог в этом пути ''/home/mariusz/Documenty/Projekty/zalien/zalien/'? Эта ошибка «Целевой сценарий WSGI» /home/mariusz/Documenty/Projekty/zalien/zalien/wsgi.py «не может быть загружен как модуль Python» обычно означает, что что-то не так с путями или с путями. Или в пакетах Python. Ознакомьтесь с первым ответом здесь: stackoverflow.com/questions/6454564/ . - person valex; 16.05.2016

Никогда не поздно. Может быть, это поможет кому-то еще. У меня была такая же ошибка, и она устранена двумя изменениями. Ниже рабочий конфиг. У меня были Django 1.10, Python 3.5 и Apache 2.4.

wsgi.pi

import os, sys, site

from django.core.wsgi import get_wsgi_application


site.addsitedir("/home/mariusz/Dokumenty/Projekt/envy/lib/python3.5/site-packages")

sys.path.append("/home/mariusz/Dokumenty/Projekty/zalien")
sys.path.append("/home/mariusz/Dokumenty/Projekty/zalien/zalien")

activate_this = "/home/mariusz/Dokumenty/Projekty/envy/bin/activate_this.py"
with open(activate_this) as f:
    code = compile(f.read(), activate_this, "exec")
    exec(code, dict(__file__=activate_this))

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "zalien.settings")

application = get_wsgi_application()

Apache test.conf

<VirtualHost *:80>
       WSGIDaemonProcess zalien processes=2 threads=12 python-home=/home/mariusz/Dokumenty/Projekt/envy/ python-path=/home/mariusz/Dokumenty/Projekty/zalien:/home/mariusz/Dokumenty/Projekt/envy//lib/python3.5/site-packages
       WSGIProcessGroup zalien
       WSGIScriptAlias / /home/mariusz/Dokumenty/Projekty/zalien/wsgi.py process-group=zalien
       ErrorLog ${APACHE_LOG_DIR}/error.log
       CustomLog ${APACHE_LOG_DIR}/access.log combined

       Alias /static/ /var/www/html/static/
         <Directory /var/www/html/static/>
             Require all granted
         </Directory>

         <Directory /home/mariusz/Dokumenty/Projekty/zalien>
            <Files wsgi.py>
              Require all granted
            </Files>
         </Directory>
</VirtualHost>
person Amith Nayak    schedule 17.11.2016