django mysql连接器wsgi

时间:2014-04-10 14:17:17

标签: django python-3.x mysql-python django-wsgi

我想在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)

如果我从命令行运行相同的代码,它可以工作。 有什么不同?

1 个答案:

答案 0 :(得分:0)

路径有问题。在vhost.conf中设置WSGIPythonPath解决了我的问题。