安装程序如下: 带有WSGI的Apache在裸机应用程序上成功设置并运行
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))让我: ['strong> doc ',' init ','模块','get_data','text','title']这是一个旧的Blog类的版本,我刚才在wsgi文件中包含的版本。我无法找到它被缓存的位置,或者为什么它没有被Blog导入覆盖,因为如果我将导入更改为只导入Blog并将实例化为Blog.Blog(),它仍会提供相同的目录内容。
答案 0 :(得分:0)
导入的模块具有“__file__”属性。打印出来,它会告诉你文件在哪里加载模块。然后你可以解决冲突。
可能是模块搜索路径上的其他版本,也可能是旧的.pyc文件。