このガイドの中の例は、 (A) Pyramid 1.3 のデフォルト SQLAlchemy アプリケーションと (B) Akhet デモに基づいています (Akhet は、 Pyramid のためのいくつかの Pylons 風のサポート機能を含む アドオンパッケージです)。 これは、それらのアプリケーションを Linux Ubuntu 11.10 にインストールして 起動するための基本的な手順です。しかし、その前に Pyramid manual の Creating a Pyramid Project を読んでください:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | # Prepare virtual Python environment.
$ cd ~/workspace
$ virtualenv myvenv
$ source myvenv/bin/activate
(myvenv)$ pip install 'Pyramid>=1.3'
# Create a Pyramid "alchemy" application and run it.
(myvenv)$ pcreate -s alchemy PyramidApp
(myvenv)$ cd PyramidApp
(myvenv)$ pip install -e .
(myvenv)$ initialize_PyramidApp_db development.ini
(myvenv)$ pserve development.ini
Starting server in PID 3871.
serving on http://0.0.0.0:6543
# Press ctrl-C to quit server
# Check out the Akhet demo and run it.
(myvenv)$ git clone git://github.com/mikeorr/akhet_demo
(myvenv)$ cd akhet_demo
(myvenv)$ pip install -e .
(myvenv)$ pserve development.ini
Starting server in PID 3871.
serving on http://0.0.0.0:6543
# Check out the Pyramid source and Akhet source to study.
(myvenv)$ git clone git://github.com/pylons/pyramid
(myvenv)$ git clone git://github.com/pylons/akhet
(myvenv)$ ls -F
akhet/
akhet_demo/
PyramidApp/
pyramid/
myvenv/
|
探すもの: ページの右上の「DT」アイコンは、デバッグツールバーです。 それは Pylons にはありませんでした。 “「populate_PyramidApp” スクリプト (13行目) はデータベースを作成します。このステップをスキップすると、ホームページに 関する例外を得るでしょう; Pyramid のインタラクティブトレースバックを見るために 「うっかり」これをすることができます。
Pylons は、アプリケーションを作成したり起動したりするためにサードパーティ のユーティリティ paster を使用します。 Pyramid は、これらのサブコマンドを “p” で始まる一連のトップレベルのコマンドに置き換えます:
Pylons | Pyramid | Description | Caveats |
---|---|---|---|
paster create | pcreate | Create an app | Option -s instead of -t |
paster serve | pserve | Run app based on INI file | - |
paster shell | pshell | Load app in Python shell | Fewer vars initialized |
paster setup-app | populate_App | Initialize database | “App” is application name |
paster routes | proutes | List routes | - |
- | ptweens | List tweens | - |
- | pviews | List views | - |
多くの場合で、コードは同じです。単に Pyramid にコピーされて、Python 3 対応されました。 Paste は Python 3 に移植されておらず、 Pyramid 開発者は、 移植するにはレガシーコードがあまりに多く含まれると決定しました。そのため、 彼らは必要な部分だけを移植しました。しかし、次の章で見るように PasteDeploy は Python 3 に 移植済み で、Pyramid はそれを使用している ということに注意してください。同様に、Paste から早期にスピンアウトした – WebOb のような – 他のいくつかのパッケージも Python 3 に移植されて、 Pyramid でもそれらを使用しています (それらは、たいてい Pyramid 開発者に よって移植されました) 。
Pylons には、どんな種類のアプリケーションを作成したいかという質問を尋ねる 1 種類の paster テンプレートがあります。 Pyramid は質問をしませんが、 その代り、選択することのできるいくつかの scaffold を提供します。 Pyramid 1.3 は次の scaffold を含んでいます:
Routing mechanism | Database | Pyramid scaffold |
---|---|---|
URL dispatch | SQLAlchemy | alchemy |
URL dispatch | - | starter |
Traversal | ZODB | zodb |
最初の 2 つの scaffold は URL ディスパッチを使用するので Pylons に近いです。 URL ディスパッチは Routes に似ています。これら 2 つの scaffold の 唯一の違いは SQLAlchemy データベースが自動的に構成されるかどうかです。 3 番目の scaffold は Pyramid の他のルーティングメカニズム、トラバーサル を使用します。このガイドの中ではトラバーサルをカバーしませんが、 それは URL を任意の深さに作成することが可能なアプリケーションに便利です。 URL ディスパッチは、固定の深さの URL 階層を持つアプリケーションにより適して います。他にどんな種類の Pyramid アプリケーションが可能かを確かめるために Kotti と Ptah ディストリビューションを見てください。Kotti はコンテンツ 管理システムで、 SQLAlchemy を使用したトラバーサルの例として役立ちます。
デフォルト ‘alchemy’ アプリケーションを作成してインストールすると、 以下のファイルが含まれています:
PyramidApp
├── CHANGES.txt
├── MANIFEST.in
├── README.txt
├── development.ini
├── production.ini
├── setup.cfg
├── setup.py
├── pyramidapp
│ ├── __init__.py
│ ├── models.py
│ ├── scripts
│ │ ├── __init__.py
│ │ └── populate.py
│ ├── static
│ │ ├── favicon.ico
│ │ ├── pylons.css
│ │ ├── pyramid.png
│ ├── templates
│ │ └── mytemplate.pt
│ ├── tests.py
│ └── views.py
└── PyramidApp.egg-info
├── PKG-INFO
├── SOURCES.txt
├── dependency_links.txt
├── entry_points.txt
├── not-zip-safe
├── requires.txt
└── top_level.txt
(いくつかの静的ファイルを省略しました) 見て分かる通り、ディレクトリ構造 は Pylons に似ていますが同一ではありません。