我在使用 Apache 和 mod_wsgi 的生产服务器上运行 django 项目时遇到问题。当我启动 apache 并第一次访问站点或从其他站点时发生此错误:
ImportError at /
Exception Value: cannot import name MyName
Exception Location /var/www/projectname/appname/somemodule.py
当我重新加载页面时,错误消失并且网站工作正常。还有一点是这个错误是选择性发生的,有时不会出现。
在项目中,我使用不带项目名称前缀的导入(我的意思是“从 accounts.models 导入账户”而不是“从 projectname.accounts.models 导入账户”)。
在开发(manage.py runserver)服务器上一切正常,没有任何麻烦。
我使用了我的 apache 和 wsgi 脚本配置的许多变体,但问题没有解决。
这是我当前的 projectname.wsgi:
#!/usr/bin/env python
import os, sys, re
sys.path.append('/var/www/projectname')
sys.path.append('/var/www')
os.environ['PYTHON_EGG_CACHE'] = '/var/www/projectname/.python-egg'
os.environ['DJANGO_SETTINGS_MODULE'] = 'settings'
import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()
这是apache配置的一些部分:
<VirtualHost ip:80>
ServerAdmin admin@server.com
DocumentRoot /var/www
ServerName www.projectname.com
WSGIScriptAlias / "/var/www/projectname/projectname.wsgi"
WSGIDaemonProcess projectname threads=5 maximum-requests=5000
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>
....
我也为 SSL 使用单独的虚拟主机。
我希望有人帮助我。
谢谢!