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' を解決できませんでした",))

クイックスタートが呼び出される直前に main.py ファイル内から構成を実行できることはわかっていますが (例: os.path.abspath(os.path.dirname( file )) を使用)、別の構成ファイルのアイデアを使用することを好みます。もし可能なら。

どんな助けでも大歓迎です(関連する場合、私はPython 3.1でCP 3.2を使用しています)

ティア・アラン

4

1 に答える 1

2

構成エントリ内のモジュールを参照する場合、CherryPyは最初にでそのモジュールを検索しますsys.modules。したがって、1つの解決策は、import cpappクイックスタートを呼び出す直前にすることです。

しかし、そのルックアップがsys.modules失敗した場合、CherryPy__import__はモジュールを試行します。それも失敗しているので、cpapp.pyモジュールが実際にインポート可能かどうかを調査する必要があるかもしれません。

lib/reprconf.py厄介な詳細については、モジュールを参照してください。

于 2010-06-02T15:11:28.867 に答える