WSGI - импорт пользовательских классов - PullRequest
1 голос
/ 30 июля 2011

Настройка следующая: Apache с WSGI успешно настроен и работает на голом приложении

import sys

# Path of the directory where scripts directory is located.
sys.path.insert(0, 'C:\\Users\\xxx\\Documents\\Programming\\www\\scripts')

from Blog import Blog #Blog.py is a file in the scripts directory

def application(environ, start_response):
    status = '200 OK'
    output = ''

    b = Blog()

    for key in environ.keys():
        output = output + str(key) + ' : ' + str(environ[key]) + '<br/>'

    output = "Test: " + b.title + "<br/>" + b.text + "<br/>" + output
    output = b.get_blog() + "<br/>" + output

    response_headers = [('Content-type', 'text/html'),
                        ('Content-Length', str(len(output)))]
    start_response(status, response_headers)

    return [output]

соответствующие части Blog.py выглядят следующим образом

class Blog:

#blogid is a str
def get_blog(self):
        conn = sqlite3.connect(self.database)
        c = conn.cursor()
        # get the blog
        c.execute('select * from blogs')
        results = []
        for row in c:
                results.append(row)
        c.close()
        return results

Журнал ошибок Apacheдает мне:

line 21, in application
output = b.get_blog() + "<br/>" + output
AttributeError: Blog instance has no attribute 'get_blog'

Изменение b.get_blog на str (dir (b)) дает мне: [' doc ', ' init ', ' module ',' get_data ',' text ',' title '], который является старой версией класса Blog, которую я включил в файл wsgi некоторое время назад.Я не могу найти, где он кэшируется или почему он не перезаписан при импорте блога, потому что, если я изменю импорт на импорт только блога и создание экземпляра для Blog.Blog (), он все равно выдаст то же содержимое каталога.

1 Ответ

0 голосов
/ 31 июля 2011

Импортированные модули имеют атрибут «__file__».Распечатайте это, он скажет вам, где находится файл, который был загружен для модуля.Затем вы можете разрешить конфликт.

Может быть, версия в другом месте в пути поиска модуля или может быть старый файл .pyc.

...