mod_wsgi не может импортировать django, но локальный python может сделать - PullRequest
0 голосов
/ 25 марта 2020

Пожалуйста, помогите мне.

Что я хочу сделать

Я хочу развернуть свое приложение Django.

Пример кода воспроизводит пробрем

import django
def application(environ, start_response):
    start_response("200 OK", [("Content-type", "text/plain")])
    return ['hello, world'.encode('utf-8')]

Это хорошо работает, когда я запускаю python с консоли, но поднимаю ModuleNotFoundError, когда я вызываю это из веб-браузера (нет модуля с именем 'django').

$ python3
Python 3.8.2 (default, Mar 24 2020, 02:28:58) 
[GCC 7.5.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import wsgi
>>> wsgi.application(None, lambda x, y: print(x, y))
200 OK [('Content-type', 'text/plain')]
[b'hello, world']
[Wed Mar 25 02:27:58.115629 2020] [wsgi:error] [pid 1717:tid 140665380144896] [remote 60.65.57.85:53170] mod_wsgi (pid=1717): Failed to exec Python script file '/home/ubuntu/grabar/wsgi.py'.
[Wed Mar 25 02:27:58.115706 2020] [wsgi:error] [pid 1717:tid 140665380144896] [remote 60.65.57.85:53170] mod_wsgi (pid=1717): Exception occurred processing WSGI script '/home/ubuntu/grabar/wsgi.py'.
[Wed Mar 25 02:27:58.115888 2020] [wsgi:error] [pid 1717:tid 140665380144896] [remote 60.65.57.85:53170] Traceback (most recent call last):
[Wed Mar 25 02:27:58.115917 2020] [wsgi:error] [pid 1717:tid 140665380144896] [remote 60.65.57.85:53170]   File "/home/ubuntu/grabar/wsgi.py", line 1, in <module>
[Wed Mar 25 02:27:58.115924 2020] [wsgi:error] [pid 1717:tid 140665380144896] [remote 60.65.57.85:53170]     import django
[Wed Mar 25 02:27:58.115955 2020] [wsgi:error] [pid 1717:tid 140665380144896] [remote 60.65.57.85:53170] ModuleNotFoundError: No module named 'django'
[Wed Mar 25 02:27:58.410154 2020] [authz_core:error] [pid 1589:tid 140665237219072] [client 60.65.57.85:53172] AH01630: client denied by server configuration: /home/ubuntu/grabar/favicon.ico, referer: http://18.176.105.25/test

Я исследовал разницу между вызываемыми локально и вызываемыми с веб-сервера.

sys.executable возвращает одно и то же значение (/ usr / local / bin / python3).

sys.path имеет небольшое отклонение, Я думаю, что это не причина.

local

['/home/ubuntu/grabar', '/usr/local/lib/python38.zip', '/usr/local/lib/python3.8', '/usr/local/lib/python3.8/lib-dynload', '/home/ubuntu/.local/lib/python3.8/site-packages', '/usr/local/lib/python3.8/site-packages']

web

['/home/ubuntu/grabar', '/home/ubuntu/grabar', '/home/ubuntu/.local/lib/python3.8/site-packages', '/usr/local/lib/python38.zip', '/usr/local/lib/python3.8', '/usr/local/lib/python3.8/lib-dynload', '/usr/local/lib/python3.8/site-packages', '/home/ubuntu/.local/lib/python3.8/site-packages']

Что мне исследовать? У вас есть идеи?

Спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...