ローカルホストで正常に動作する Django アプリがあります。しかし、サーバーで試してみると、次のエラーが表示されます (DEBUG 出力に見られるように)。
No module named views
Request Method: GET
Request URL: url_to_site/accounts/login
Django Version: 1.6.1
Exception Type: ImportError
Exception Value:
No module named views
Exception Location: /opt/dev/site/smsmessages/views.py in <module>, line 1
Python Executable: /usr/bin/python
Python Version: 2.6.6
Python Path:
['/opt/dev/myfolder/project/app',
'/opt/dev/myfolder/project',
'/usr/lib64/python26.zip',
'/usr/lib64/python2.6',
'/usr/lib64/python2.6/plat-linux2',
'/usr/lib64/python2.6/lib-tk',
'/usr/lib64/python2.6/lib-old',
'/usr/lib64/python2.6/lib-dynload',
'/usr/lib64/python2.6/site-packages',
'/usr/lib64/python2.6/site-packages/gtk-2.0',
'/usr/lib/python2.6/site-packages']
スタック トレースの一部は次のとおりです。
/opt/dev/myfolder/project/app/urls.py in <module>
url(r'^messages/', include('smsmessages.urls', namespace='smsmessages', app_name='smsmessages')),
[some more stack trace output here...]
/opt/dev/myfolder/project/smsmessages/urls.py in <module>
from smsmessages.views import MessageCreateView, MessageListView, MessageUpdateView, MessageDeleteView
[...]
/opt/dev/myfolder/project/smsmessages/views.py in <module>
from braces.views import LoginRequiredMixin
このアプリではDjango-bracesを使用しています。しかし、実行時にアプリが問題なく動作することに困惑しています。
$ python manage.py runserver
同じサーバー上および:
$ curl mysite
<site's content is returned here without a glitch>
私が行うと、インポートbraces.views
も機能するようです:
$ python manage.py shell
(InteractiveConsole)
>>> from braces.views import *
>>> print "no problem here"
サーバーとしてApacheに戻ったときにのみ、前述のエラーに直面します(curl
.
これは、wsgi.py または Apache ('2.2.15 (Red Hat)') 構成が問題を引き起こしているのかどうか疑問に思います。wsgi と Apache に関する DEBUG メッセージによって返されるメタ情報の一部は次のとおりです。
mod_wsgi.listener_port '80'
mod_wsgi.listener_host ''
SERVER_SOFTWARE 'Apache/2.2.15 (Red Hat)'
SCRIPT_NAME u''
mod_ssl.var_lookup ''
mod_wsgi.handler_script ''
SERVER_SIGNATURE '<address>Apache/2.2.15 (Red Hat) Server at site.com Port 80</address>\n'
REQUEST_METHOD 'GET'
PATH_INFO u'/accounts/login'
SERVER_PROTOCOL 'HTTP/1.1'
mod_wsgi.request_handler 'wsgi-script'
wsgi.url_scheme 'http'
PATH_TRANSLATED '/opt/dev/myfolder/project/app/wsgi.py/accounts/login'
wsgi.multiprocess True
mod_wsgi.input_chunked '0'
DOCUMENT_ROOT '/var/www/html'
mod_wsgi.process_group ''
SCRIPT_FILENAME '/opt/dev/myfolder/project/app/wsgi.py'
の内容wsgi.py
は次のとおりです。
import os, sys
sys.path.append('/usr/lib64/python2.6/site-packages/')
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "app.settings")
from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()
Apache の構成は次のとおりです。
WSGIPythonPath /opt/dev/myfolder/project/
<Directory /opt/dev/myfolder/project/app>
<Files wsgi.py>
Order deny,allow
Allow from all
</Files>
</Directory>
<VirtualHost *:80>
Alias /static/ /opt/dev/myfolder/app/static/
ServerAdmin email@email.com
ServerName site.com
ErrorLog logs/site.com-error_log
CustomLog logs/site.com-access_log common
WSGIScriptAlias / /opt/dev/myfolder/project/app/wsgi.py
私が間違っていることや欠けていることはありますか? 誰もこのエラーを見たことがありますか? 私はできる限りすべてを調査しました (StackOverflow に関するものを含みますがNo module named views
、Django、Apache、wsgi、そしておそらく Django-braces の経験がある人がここで何が問題なのか教えてくれれば本当にありがたいです。どうもありがとうございました。