CherryPy configuration tools.staticdir.root problem

泪湿孤枕 提交于 2019-12-21 22:14:07

问题


How can I make my static-file root directories relative to my application root folder (instead of a hard-coded path)?

In accordance with CP instructions (http://www.cherrypy.org/wiki/StaticContent) I have tried the following in my configuration file:

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

but when I run cherrpy.quickstart(rootclass, script_name='/', config=config_file) I get the following error

builtins.ValueError: ("Config error in section: 'global', option: 'tree.cpapp', value: 'cherrypy.Application(cpapp.Root())'. Config values must be valid Python.", 'TypeError', ("unrepr could not resolve the name 'cpapp'",))

I know I can do configuration from within the main.py file just before quickstart is called (eg. using os.path.abspath(os.path.dirname(file))), but I prefer using the idea of a separate configuration file if possible.

Any help would be appreciated (in case it is relevant, I am using CP 3.2 with Python 3.1)

TIA Alan


回答1:


When you refer to a module inside configuration entries, CherryPy first looks for that module in sys.modules. So one solution would be to import cpapp just before you call quickstart.

But if that lookup in sys.modules fails, CherryPy tries to __import__ the module. Since that is also failing, you might need to investigate whether your cpapp.py module is indeed importable at all.

See the lib/reprconf.py module for all the gory details.



来源:https://stackoverflow.com/questions/2954370/cherrypy-configuration-tools-staticdir-root-problem

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!