pyramid+mongodbのプロジェクトを 公式ドキュメントの MongoDB and Pyramid を参考にpyramid_mongodbのscaffoldを利用して作成しようとしたらエラーが出て手間取ったのでメモっておく

ひとまずPython2で

Python仮想環境を構築してpyramidpyramid_mongodbをインストールする

1
2
3
$ pyenv virtualenv 2.7.8 pyramid-mongo-27
$ pyenv activate pyramid-mongo-27
(pyramid-mongo-27)$ pip install pyramid pyramid_mongodb

利用できるスカフォードにpyramid_mongodbがあると思うので これを利用してプロジェクトを作成する

1
2
3
4
5
6
7
(pyramid-mongo-27)$ pcreate -l
Available scaffolds:
  alchemy:          Pyramid SQLAlchemy project using url dispatch
  pyramid_mongodb:  pyramid MongoDB project
  starter:          Pyramid starter project
  zodb:             Pyramid ZODB project using traversal
(pyramid-mongo-27)$ pcreate -s pyramid_mongodb pyramid-mongo

setup.pyから依存パッケージをインストールして

1
2
3
4
(pyramid-mongo-27)$ cd pyramid-mongo
(pyramid-mongo-27)$ python setup.py develop
...
Finished processing dependencies for pyramid-mongo==0.0

development.iniのmongodbの接続情報を編集

development.ini
1
2
3
4
5
[app:pyramid-mongo]
...
mongodb.url = mongodb://localhost
mongodb.db_name = mydb
...

サーバーを実行すると

1
2
3
(pyramid-mongo-27)$ pserve development.ini
Starting server in PID 8520.
serving on 0.0.0.0:6543 view at http://127.0.0.1:6543

ValueError: No such renderer factory .pt

とまあ、エラーになるわけですね…

エラーメッセージでぐぐってみると What’s New In Pyramid 1.5 が出てきて

Pyramid no longer depends on or configures the Mako and Chameleon templating system renderers by default.

とのことで、自分でテンプレートエンジンの設定を追加してあげればよい模様

setup.py
1
2
3
4
5
6
7
8
setup(
    #...
    install_requires=[
        'pyramid_chameleon',         # new dependency
        'pyramid',
        #...
    ],
)

再度setup.pyを実行(もしくは直接pipでインストール)する

1
(pyramid-mongo-27)$ python setup.py develop

__init__.pypyramid_chameleon行を追加

__init__.py
1
2
config = Configurator(.....)
config.include('pyramid_chameleon')

サーバー起動して確認してOK.

1
(pyramid-mongo-27)$ pserve development.ini

以上。

Comments