CherryPy配置tools.staticdir.root问题
我该如何让我的静态文件根目录相对于我的应用程序根文件夹,而不是使用硬编码的路径呢?
根据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)
谢谢大家,
Alan
1 个回答
2
当你在配置中提到一个模块时,CherryPy 首先会在 sys.modules
中查找这个模块。所以一个解决办法是在调用 quickstart 之前先 import cpapp
。
但是如果在 sys.modules
中找不到这个模块,CherryPy 会尝试用 __import__
来导入它。既然这也失败了,你可能需要检查一下你的 cpapp.py
模块是否真的可以被导入。
想了解更多细节,可以查看 lib/reprconf.py
模块。