2

Pyramid フレームワークで Mako を使用しようとするときは、development.ini ファイルに移動して、次の行を追加します。

mako.directories = TestProject:templates 

の:

[app:TestProject]

次に、templates サブディレクトリに template.mako という単純な html ファイルを作成すると、次のようになります。

ImportError: No module named TestProject

しかし、上記の手順の後になぜこれが起こっているのか理解できません。これらの手順で importError が生成されるのはなぜですか?

エラーの詳細:

URL: http://localhost:6543/
File 'C:\\env\\lib\\site-packages\\weberror-0.10.3-py2.7.egg\\weberror\\evalexception.py', line 431 in respond
app_iter = self.application(environ, detect_start_response)
File 'C:\\env\\lib\\site-packages\\pyramid-1.0-py2.7.egg\\pyramid\\router.py', line 158 in __call__
response = view_callable(context, request)
File 'C:\\env\\lib\\site-packages\\pyramid-1.0-py2.7.egg\\pyramid\\config.py', line 2839 in _rendered_view
context)
File 'C:\\env\\lib\\site-packages\\pyramid-1.0-py2.7.egg\\pyramid\\renderers.py', line 294 in render_view
request=request)
File 'C:\\env\\lib\\site-packages\\pyramid-1.0-py2.7.egg\\pyramid\\renderers.py', line 322 in render_to_response
result = self.render(value, system_values, request=request)
File 'C:\\env\\lib\\site-packages\\pyramid-1.0-py2.7.egg\\pyramid\\renderers.py', line 298 in render
renderer = self.renderer
File 'C:\\env\\lib\\site-packages\\pyramid-1.0-py2.7.egg\\pyramid\\decorator.py', line 17 in __get__
val = self.wrapped(inst)
File 'C:\\env\\lib\\site-packages\\pyramid-1.0-py2.7.egg\\pyramid\\renderers.py', line 280 in renderer
return factory(self)
File 'C:\\env\\lib\\site-packages\\pyramid-1.0-py2.7.egg\\pyramid\\mako_templating.py', line 77 in renderer_factory
directories = [ abspath_from_asset_spec(d) for d in directories ]
File 'C:\\env\\lib\\site-packages\\pyramid-1.0-py2.7.egg\\pyramid\\asset.py', line 207 in abspath_from_asset_spec
return pkg_resources.resource_filename(pname, filename)
File 'C:\\env\\lib\\site-packages\\setuptools-0.6c12dev_r88124-py2.7.egg\\pkg_resources.py', line 881 in resource_filename
File 'C:\\env\\lib\\site-packages\\setuptools-0.6c12dev_r88124-py2.7.egg\\pkg_resources.py', line 201 in get_provider
ImportError: No module named TestProject
4

2 に答える 2

9

要約として:

ファイルを編集development.iniし、セクションに追加し[app:MyProject]ます。

mako.directories = myproject:templates

これで、ファイルを開いて次の/MyProject/myproject/__init__.pyような行を追加できます。

config.add_route('foo', '/foo', view='myproject.views.foo', view_renderer='foo.mako')

これにより、次の場所にあるテンプレートがレンダリングされます。 /MyProject/myproject/templates/foo.mako


注: MyProjectmyprojectはあなたのプロジェクトの名前です。ケースを尊重します。

production.iniファイルで同じ構成を行うことを忘れないでください!

編集: 機能セクションの 1.3a1 バージョンのピラミッド (2011-12-09) 変更ログに表示されます。

Mako テンプレートを使用するために mako.directories 設定は不要になりました。 根拠: Mako テンプレート レンダラーは、絶対アセット仕様を使用して指定できます。アプリケーション全体は、順序付けされたルックアップ パスを必要とせずに、このようなアセット仕様で作成できます。

于 2011-04-25T16:56:38.157 に答える
3

これは、mako.templates の仕様が package:directory の形式になっているために発生します。したがって、あなたの場合は「TestProject」と呼ばれるパッケージが必要です。

あなたのプロジェクト用のパッケージがあるかもしれませんが、どうやら "TestProject" と呼ばれていません。

于 2011-02-20T22:26:32.093 に答える