我想在linux上用apache移动django站点。我设置vhost指向我的站点以文件wsgi.py.这很好。我正在使用virtualenv来设置我的环境(只有一个python站点)。当django调用Mysql数据库时出现问题。最终会出现 ImportError:没有命名的模块' mysql.connector.django' 但是我可以导入mysql.connector。
这是我在wsgi.py
中的代码import os
import sys
import site
sys.path.append('/var/www/com/langevo/src/dictionary_site')
sys.path.append('/var/www/com/langevo/src/dictionary_site/my_site')
output = 'test'
def application(environ, start_response):
status = '200 OK'
output = 'No!'
# Activate virtual env
activate_env = '/usr/share/python/py33/bin/activate_this.py'
with open(activate_env) as f:
code = compile(f.read(), activate_env, 'exec')
exec(code, dict(__file__=activate_env))
# test if env is set
if hasattr(sys, 'real_prefix'):
output = '1'
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "settings")
from django.conf import settings
output = settings.BASE_DIR
import mysql.connector # works
from game.dal import LanguageDal # raise exception ImportError: No module named 'mysql.connector.django'
# data = LanguageDal.get_all_languages()
output = '2'
response_headers = [('Content-type', 'text/plain'), ('Content-Length', str(len(output)))]
start_response(status, response_headers)
return [output]
这里是apache log
[Thu Apr 10 13:45:26 2014] [info] [client 192.168.120.18] mod_wsgi (pid=8655, process='', application='dictionary.langevo.com|'): Reloading WSGI script '/var/www/com/langevo/src/dictionary_site/langevo_site/wsgi.py'.
[Thu Apr 10 13:45:26 2014] [error] [client 192.168.120.18] mod_wsgi (pid=8655): Exception occurred processing WSGI script '/var/www/com/langevo/src/dictionary_site/langevo_site/wsgi.py'.
[Thu Apr 10 13:45:26 2014] [error] [client 192.168.120.18] Traceback (most recent call last):
[Thu Apr 10 13:45:26 2014] [error] [client 192.168.120.18] File "/usr/share/python/py33/lib/python3.3/site-packages/django/db/utils.py", line 113, in load_backend
[Thu Apr 10 13:45:26 2014] [error] [client 192.168.120.18] return import_module('%s.base' % backend_name)
[Thu Apr 10 13:45:26 2014] [error] [client 192.168.120.18] File "/usr/lib64/python3.3/importlib/__init__.py", line 88, in import_module
[Thu Apr 10 13:45:26 2014] [error] [client 192.168.120.18] return _bootstrap._gcd_import(name[level:], package, level)
[Thu Apr 10 13:45:26 2014] [error] [client 192.168.120.18] File "<frozen importlib._bootstrap>", line 1577, in _gcd_import
[Thu Apr 10 13:45:26 2014] [error] [client 192.168.120.18] File "<frozen importlib._bootstrap>", line 1558, in _find_and_load
[Thu Apr 10 13:45:26 2014] [error] [client 192.168.120.18] File "<frozen importlib._bootstrap>", line 1505, in _find_and_load_unlocked
[Thu Apr 10 13:45:26 2014] [error] [client 192.168.120.18] File "<frozen importlib._bootstrap>", line 313, in _call_with_frames_removed
[Thu Apr 10 13:45:26 2014] [error] [client 192.168.120.18] File "<frozen importlib._bootstrap>", line 1577, in _gcd_import
[Thu Apr 10 13:45:26 2014] [error] [client 192.168.120.18] File "<frozen importlib._bootstrap>", line 1558, in _find_and_load
[Thu Apr 10 13:45:26 2014] [error] [client 192.168.120.18] File "<frozen importlib._bootstrap>", line 1522, in _find_and_load_unlocked
[Thu Apr 10 13:45:26 2014] [error] [client 192.168.120.18] ImportError: No module named 'mysql.connector.django'
Python 3.3 Django是1.6 wsgi 3.4
这是我的点子列表
decorator (3.4.0)
distribute (0.7.3)
Django (1.6.2)
django-filter (0.7)
django-uuidfield (0.5.0)
djangorestframework (2.3.13)
mysql-connector-python (1.1.6)
pip (1.4.1)
setuptools (0.9.8)
如果我从命令行运行相同的代码,它可以工作。 有什么不同?
答案 0 :(得分:0)
路径有问题。在vhost.conf中设置WSGIPythonPath解决了我的问题。