让打包为Python egg的Django应用与Django管理文档兼容
我接手了一个Django(1.1)项目,这个项目里安装了好几个Django应用,都是以“egg”的形式放在/usr/lib/python2.6/site-packages/目录下。这在其他地方都能正常工作,但在Django的管理文档中就出问题了。想查看标签或过滤器的文档时,出现了:
File "/usr/lib/python2.6/site-packages/Django-1.1.1-py2.6.egg/django/contrib/admindocs/views.py" in load_all_installed_template_libraries
313. libraries = [os.path.splitext(p)[0] for p in os.listdir(e) if p.endswith('.py') and p[0].isalpha()]
Exception Type: OSError at /admin/doc/tags/
Exception Value: (20, 'Not a directory')
这里的问题是
e = '/usr/lib/python2.6/site-packages/django_tinymce-1.5-py2.6.egg/tinymce/templatetags'
简单来说,Django的管理文档无法自动加载这些“egg”,因为它们是压缩文件,而不是文件夹。
我查了一下,觉得我可以尝试以下几种方法:
- 把这些“egg”解压到原来的位置
- 调整一下http://docs.djangoproject.com/en/dev/howto/deployment/modpython/#using-eggs-with-mod-python的内容(我现在用的是mod_wsgi)
- 修改Django管理文档的代码,让它能正确处理“egg”文件
这些方法可能都不算太难,但在生产服务器上用起来都不是很理想。有没有人遇到过这个问题?你们有什么建议吗?
1 个回答
0
你有没有指定一个可以被运行你代码的Apache用户写入的目录,作为蛋缓存目录呢?
http://code.google.com/p/modwsgi/wiki/ApplicationIssues#Access_Rights_Of_Apache_User