Целевой скрипт WSGI не может быть загружен как модуль Python - PullRequest
45 голосов
/ 23 июня 2011

Я пытаюсь развернуть mod_wsgi с apache для запуска приложения django, но получаю ошибку 500 внутренняя ошибка сервера Журналы apache показывают:

[Thu Jun 23 14:01:47 2011] [error] [client 152.78.95.64] mod_wsgi (pid=16142): Exception occurred processing WSGI script '/home/user/bms/apache/django.wsgi'.
[Thu Jun 23 14:01:47 2011] [error] [client 152.78.95.64] Traceback (most recent call last):
[Thu Jun 23 14:01:47 2011] [error] [client 152.78.95.64]   File "/home/user/bms/apache/django.wsgi", line 13, in <module>
[Thu Jun 23 14:01:47 2011] [error] [client 152.78.95.64]     import django.core.handlers.wsgi
[Thu Jun 23 14:01:47 2011] [error] [client 152.78.95.64] ImportError: No module named django.core.handlers.wsgi

Мой виртуальный хост apache выглядит следующим образом:

<VirtualHost *:80>

    DocumentRoot /home/user/bms

    <Directory /home/user/bms>
        Order allow,deny
        Allow from all
    </Directory>

WSGIDaemonProcess bms user=user group=user processes=2 threads=25 python-path=/usr/local/lib/python2.7/site-packages


    WSGIProcessGroup bms

    WSGIScriptAlias / /home/user/bms/apache/django.wsgi

</VirtualHost>

И указанный файл wsgi в каталоге моего приложения с разрешениями 0777:

import os
import sys

path = '/home/user/bms'
if path not in sys.path:
    sys.path.append(path)

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

import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()

Я слышал, что это может быть из-за того, что пользователь apache не имеет правильных разрешений.Однако я понятия не имею, как это исправить.Я также попытался запустить deamon с пользователем www-data, но это не решило проблему.

EDIT :

Я решил это, скопировав файл виртуальных хостов впо умолчанию, а затем отключение старого с помощью a2dissite.Я понятия не имею, как я могу сделать это "должным образом" и настроить его так, чтобы apache перешел к виртуальному хосту, который я хочу, хотя.

Ответы [ 15 ]

0 голосов
/ 05 сентября 2018

У меня была та же проблема, и она была решена с помощью

sudo easy_install cx_Oracle

, но не забудьте удалить cx_oracle перед установкой с использованием easy_install.

Команда для удаления: pip uninstall cx_oracle

0 голосов
/ 04 августа 2018

У меня была похожая проблема, например, ошибка журнала apache "wsgi.py не может быть загружен как модуль Python".

Оказалось, что я должен был остановиться и затем запустить apache вместо того, чтобы просто перезапустить его.

0 голосов
/ 16 февраля 2018

Добавление в список - вот как я это получил.

Я пытался установить CKAN 2.7.2 на CentOS 7 из исходного кода и продолжал сталкиваться с этой ошибкой. Для меня это было потому, что SELinux был включен. Мне не нужно было отключать это. Вместо этого после прочтения https://www.endpoint.com/blog/2010/10/13/selinux-httpd-modwsgi-26-rhel-centos-5, я обнаружил, что включение httpd_can_network_connect исправило это:

setsebool -P httpd_can_network_connect on

С этой страницы:

httpd_can_network_connect - позволяет httpd устанавливать сетевые подключения, включая локальные, которые вы будете вносить в базу данных

0 голосов
/ 24 марта 2017

Если вы устанавливаете Python-зависимости вашего проекта внутри virtualenv, вам нужно добавить путь к каталогу virtualenv в ваш путь Python.Для этого добавьте дополнительный путь к вашей директиве WSGIPythonPath, с несколькими путями, разделенными двоеточием (:), если используется UNIX-подобная система, или точкой с запятой (;), если используется Windows

0 голосов
/ 24 февраля 2017

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

В моем случае я хочузапустить OpenStack Keystone (Ocata) с использованием Apache и WSGI в Ubuntu 16.04.2.Процессы запускаются, но как только я запрашиваю keystone, я получаю

mod_wsgi (pid=20103): Target WSGI script '/opt/openstack/bin/keystone-wsgi-public' cannot be loaded as Python module.

У меня было два vhosts, у одного было

WSGIDaemonProcess keystone-public ...
WSGIProcessGroup keystone-public ...

, а у другого

WSGIDaemonProcess keystone-admin ...
WSGIProcessGroup keystone-admin ...

Я решил проблему, переименовав их.Записи vhost теперь читаются:

WSGIDaemonProcess kst-pub ...
WSGIProcessGroup kst-pub ...

и

WSGIDaemonProcess kst-adm ...
WSGIProcessGroup kst-adm ...

Я больше не расследовал.Решено, как работает для меня.

...