CherryPy配置tools.staticdir.root问题

时间:2010-06-02 01:00:58

标签: python configuration relative-path cherrypy

如何创建相对于应用程序根文件夹的静态文件根目录(而不是硬编码路径)?

根据CP说明(http://www.cherrypy.org/wiki/StaticContent),我在配置文件中尝试了以下内容:

tree.cpapp = cherrypy.Application(cpapp.Root())
tools.staticdir.root = cpapp.current_dir

但是当我运行cherrpy.quickstart(rootclass, script_name='/', config=config_file)时 我收到以下错误

builtins.ValueError :(“部分中的配置错误:'global',选项:'tree.cpapp',值:'cherrypy.Application(cpapp.Root())'。配置值必须是有效的Python 。“,'TypeError',(”unrepr无法解析名称'cpapp'“,))

我知道我可以在调用quickstart之前从main.py文件中进行配置(例如,使用os.path.abspath(os.path.dirname( file ))),但是如果可能的话,我更喜欢使用单独的配置文件。

任何帮助将不胜感激(如果它是相关的,我使用CP 3.2与Python 3.1)

TIA 艾伦

1 个答案:

答案 0 :(得分:2)

当您在配置条目中引用模块时,CherryPy首先在sys.modules中查找该模块。因此,在您致电快速启动之前,一个解决方案就是import cpapp

但如果sys.modules中的查找失败,CherryPy会尝试__import__模块。由于这也失败了,您可能需要调查您的cpapp.py模块是否确实可以导入。

请参阅lib/reprconf.py模块了解所有血腥细节。