1

この django アプリケーションを CentOS 6 / Apache/2.2.15 で実行するのに問題があります。アプリを実行すると、次のエラーが表示されます。

 Traceback (most recent call last):
   File "/usr/local/lib/python2.7/site-packages/django/core/handlers/wsgi.py", line 272, in __call__
     response = self.get_response(request)
   File "/usr/local/lib/python2.7/site-packages/django/core/handlers/base.py", line 169, in get_response
     response = self.handle_uncaught_exception(request, resolver, sys.exc_info())
   File "/usr/local/lib/python2.7/site-packages/django/core/handlers/base.py", line 203, in handle_uncaught_exception
     return debug.technical_500_response(request, *exc_info)
   File "/usr/local/lib/python2.7/site-packages/django/views/debug.py", line 59, in technical_500_response
     html = reporter.get_traceback_html()
   File "/usr/local/lib/python2.7/site-packages/django/views/debug.py", line 151, in get_traceback_html
     return t.render(c)
   File "/usr/local/lib/python2.7/site-packages/django/template/base.py", line 123, in render
     return self._render(context)
   File "/usr/local/lib/python2.7/site-packages/django/template/base.py", line 117, in _render
     return self.nodelist.render(context)
   File "/usr/local/lib/python2.7/site-packages/django/template/base.py", line 744, in render
     bits.append(self.render_node(node, context))
   File "/usr/local/lib/python2.7/site-packages/django/template/debug.py", line 73, in render_node
     result = node.render(context)
   File "/usr/local/lib/python2.7/site-packages/django/template/debug.py", line 90, in render
     output = self.filter_expression.resolve(context)
   File "/usr/local/lib/python2.7/site-packages/django/template/base.py", line 536, in resolve
     new_obj = func(obj, *arg_vals)
   File "/usr/local/lib/python2.7/site-packages/django/template/defaultfilters.py", line 695, in date
     return format(value, arg)
   File "/usr/local/lib/python2.7/site-packages/django/utils/dateformat.py", line 285, in format
     return df.format(format_string)
   File "/usr/local/lib/python2.7/site-packages/django/utils/dateformat.py", line 30, in format
     pieces.append(force_unicode(getattr(self, piece)()))
   File "/usr/local/lib/python2.7/site-packages/django/utils/dateformat.py", line 191, in r
     return self.format('D, j M Y H:i:s O')
   File "/usr/local/lib/python2.7/site-packages/django/utils/dateformat.py", line 30, in format
     pieces.append(force_unicode(getattr(self, piece)()))
   File "/usr/local/lib/python2.7/site-packages/django/utils/encoding.py", line 71, in force_unicode
     s = unicode(s)
   File "/usr/local/lib/python2.7/site-packages/django/utils/functional.py", line 206, in __unicode_cast
     return self.__func(*self.__args, **self.__kw)
   File "/usr/local/lib/python2.7/site-packages/django/utils/translation/__init__.py", line 81, in ugettext
     return _trans.ugettext(message)
   File "/usr/local/lib/python2.7/site-packages/django/utils/translation/trans_real.py", line 286, in ugettext
     return do_translate(message, 'ugettext')
   File "/usr/local/lib/python2.7/site-packages/django/utils/translation/trans_real.py", line 276, in do_translate
     _default = translation(settings.LANGUAGE_CODE)
   File "/usr/local/lib/python2.7/site-packages/django/utils/translation/trans_real.py", line 185, in translation
     default_translation = _fetch(settings.LANGUAGE_CODE)
   File "/usr/local/lib/python2.7/site-packages/django/utils/translation/trans_real.py", line 162, in _fetch
     app = import_module(appname)
   File "/usr/local/lib/python2.7/site-packages/django/utils/importlib.py", line 35, in import_module
     __import__(name)
   File "/usr/local/lib/python2.7/site-packages/django/contrib/admin/__init__.py", line 3, in <module>
     from django.contrib.admin.helpers import ACTION_CHECKBOX_NAME
   File "/usr/local/lib/python2.7/site-packages/django/contrib/admin/helpers.py", line 3, in <module>
     from django.contrib.admin.util import (flatten_fieldsets, lookup_field,
   File "/usr/local/lib/python2.7/site-packages/django/contrib/admin/util.py", line 1, in <module>
     from django.db import models
   File "/usr/local/lib/python2.7/site-packages/django/db/__init__.py", line 78, in <module>
     connection = connections[DEFAULT_DB_ALIAS]
   File "/usr/local/lib/python2.7/site-packages/django/db/utils.py", line 93, in __getitem__
     backend = load_backend(db['ENGINE'])
   File "/usr/local/lib/python2.7/site-packages/django/db/utils.py", line 33, in load_backend
     return import_module('.base', backend_name)
   File "/usr/local/lib/python2.7/site-packages/django/utils/importlib.py", line 35, in import_module
     __import__(name)
   File "/usr/local/lib/python2.7/site-packages/django/db/backends/postgresql_psycopg2/base.py", line 9, in <module>
     from django.db import utils
 TemplateSyntaxError: Caught ImportError while rendering: cannot import name utils

このエラーを検索すると、いくつかの解決策が見つかりましたが、すべてを試しましたが、何も機能しませんでした:

  1. WSGI をデーモン モードで実行します。
  2. Django のインストール パスが Python PAth にあるかどうかを確認します。
  3. 同じ Apache VirtualHost で実行されている別のアプリケーションが原因である可能性があると考えたため、別の VH (別のポート) を入れましたが、機能しませんでした。
  4. 私は 2 つのデータベース接続を持っています: このアプリでは Oracle と PostgreSQL です。Oracle は問題ありません。おそらく問題は postgresql_psycopg2 です。私はスルーyumをインストールしました。

これが私のファイルです:

vhost.conf:

    NameVirtualHost 10.7.0.17:80
    NameVirtualHost 10.7.0.17:8080

    <VirtualHost 10.7.0.17:80>
        ServerAdmin webmaster@www.domain.com
        ServerName www.domain.com
        ServerAlias www.domain.com
        DocumentRoot /var/www/www.domain.com/html/
        ErrorLog /var/www/www.domain.com/logs/error.log
        CustomLog /var/www/www.domain.com/logs/access.log combined

        WSGIDaemonProcess www.domain.com processes=2 threads=15 display-name=%{GROUP}
        WSGIProcessGroup www.domain.com


        Alias /vlv/media/ /var/www/www.domain.com/django/vlv_vistoria/media/

        WSGIScriptAlias /vlv /var/www/www.domain.com/django/vlv_vistoria/django.wsgi

        <Directory /var/www/www.domain.com/django/vlv_vistoria>
            Order allow,deny
            Allow from all
            Options Indexes FollowSymLinks
        </Directory>


        <Directory /var/www/www.domain.com/django/vlv_vistoria/media>
            Order allow,deny
            Allow from all
            Options Indexes FollowSymLinks
        </Directory>

    </VirtualHost>



    <VirtualHost 10.7.0.17:8080>
        ServerAdmin webmaster@www.domain.com
        ServerName www.domain.com
        ServerAlias www.domain.com
        DocumentRoot /var/www/www.domain.com/html/
        ErrorLog /var/www/www.domain.com/logs/sistema_error.log
        CustomLog /var/www/www.domain.com/logs/sistema_access.log combined

        WSGIDaemonProcess sistema.www.domain.com processes=2 threads=15 display-name=%{GROUP}
        WSGIProcessGroup sistema.www.domain.com

        Alias /sistema/media/ /var/www/www.domain.com/django/sistema/media/

        WSGIScriptAlias /sistema /var/www/www.domain.com/django/sistema/django.wsgi

        <Directory /var/www/www.domain.com/django/sistema>
            Order allow,deny
            Allow from all
            Options Indexes FollowSymLinks
        </Directory>


        <Directory /var/www/www.domain.com/django/sistema/media>
            Order allow,deny
            Allow from all
            Options Indexes FollowSymLinks
        </Directory>

    </VirtualHost>

django.wsgi

    import os, sys

    sys.path.append('/var/www/www.domain.com/django')
    sys.path.append('/var/www/www.domain.com/django/sistema')

    sys.path.append('/usr/local/lib/python2.7/site-packages/django')


    root = os.path.join(os.path.dirname(__file__), '..')
    sys.path.insert(0, root)

    os.path.dirname(__file__)
    sys.path.insert(0, root)

    os.environ['DJANGO_SETTINGS_MODULE'] = 'settings'

    os.environ["ORACLE_HOME"] = "/ora00/app/oracle/product/client"

    import django.core.handlers.wsgi
    application = django.core.handlers.wsgi.WSGIHandler()

助けてくれてありがとう。

4

2 に答える 2

0

Pyramid と sqlalchemy でこの問題を検索しているときに誰かがこれにつまずいた場合:

Pyramid と組み合わせて、同じエラーが発生しました (「ImportError: 名前 util をインポートできません」)。何時間もの試行錯誤の末、私が production.ini で設定したことが唯一の理由であることが判明しました。

[server:main]
use = egg:waitress#main
host = 0.0.0.0
port = 80

ポート 80 で Apache2 も使用していましたが、これが同じであることは奇妙に思えました。ポートを 6543 などに変更すると、エラーがなくなり、WSGI サーバーが機能するようになりました。必要に応じて apache2-settings (WSGIPythonHome、WSGIPythonPath) はありません。

どうやら無関係で、ポートの競合がこのエラーを引き起こした理由はわかりませんが、この問題で他の誰かを助けるかもしれません.

于 2015-10-15T11:52:43.480 に答える