3

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

根据 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 一起使用)

蒂亚艾伦

4

1 回答 1

2

当您在配置条目中引用模块时,CherryPy 首先在sys.modules. 因此,一种解决方案是import cpapp在您调用快速入门之前。

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

有关所有血腥细节,请参阅该lib/reprconf.py模块。

于 2010-06-02T15:11:28.867 回答