pyramid+mongodbのプロジェクトを
公式ドキュメントの
MongoDB and Pyramid
を参考にpyramid_mongodbのscaffoldを利用して作成しようとしたらエラーが出て手間取ったのでメモっておく
ひとまずPython2で
Python仮想環境を構築してpyramidとpyramid_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.ini1
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.py1
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__.pyにpyramid_chameleon行を追加
__init__.py1
2
  | config = Configurator(.....)
config.include('pyramid_chameleon')
  | 
  
サーバー起動して確認してOK.
1
  | (pyramid-mongo-27)$ pserve development.ini
  | 
 
以上。