如何创建相对于应用程序根文件夹的静态文件根目录(而不是硬编码路径)?
根据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 艾伦
答案 0 :(得分:2)
当您在配置条目中引用模块时,CherryPy首先在sys.modules
中查找该模块。因此,在您致电快速启动之前,一个解决方案就是import cpapp
。
但如果sys.modules
中的查找失败,CherryPy会尝试__import__
模块。由于这也失败了,您可能需要调查您的cpapp.py
模块是否确实可以导入。
请参阅lib/reprconf.py
模块了解所有血腥细节。