インストール

このチュートリアルは、あなたのシステムに Python と virtualenv が既に インストールされて動作する状態になっていることを想定しています。 もしこの環境構築に助けが必要な場合、 Installing Pyramid の章を 参照してください。

準備

チュートリアルの準備をするには次の手順を実行します。 手順はUNIXまたはWindowsを使っているかによって、若干異なります。

準備 (UNIX)

  1. まだインストールしていなければ SQLite3 とその開発用パッケージの インストール。通常これはシステムのパッケージマネージャーを介して行います。 例えば Debian Linuxシステムでは sudo apt-get install libsqlite3-dev を実行します。
  1. virtualenv を使ってワークスペースを作成します:

    $ path/to/my/Python-2.6/bin/virtualenv --no-site-packages pyramidtut
    
  1. pyramidtut ディレクトリに移動します:

    $ cd pyramidtut
    
  1. easy_install を使って Pyramid と直接の依存関係を インストールします:

    $ bin/easy_install pyramid
    

準備 (Windows)

  1. virtualenv を使ってワークスペースを作成します:

    c:\> c:\Python26\Scripts\virtualenv --no-site-packages pyramidtut
    
  1. pyramidtut ディレクトリに移動します:

    c:\> cd pyramidtut
    
  1. easy_install を使って Pyramid と直接の依存関係を インストールします:

    c:\pyramidtut> Scripts\easy_install pyramid
    

プロジェクトの作成

次のステップはプロジェクトを作成することです。 Pyramid はサンプル プロジェクトを作成するための様々な骨組み (scaffold) を提供しています。 私たちは scaffold として alchemy を使用します。これは SQLAlchemyURL dispatch を使用するアプリケーションを 生成します。

以下の説明では、現在の作業ディレクトリが “pyramidtut” という名前の “virtualenv” であると仮定しています。

UNIX の場合:

$ bin/pcreate -s alchemy tutorial

Windows の場合:

c:\pyramidtut> Scripts\pcreate -s alchemy tutorial

Note

Windows を使っている場合、 alchemy scaffold はパスにスペースが 含まれている場所には簡単にインストールできないかもしれません。もし startup で問題に遭遇したら、 virtualenv とプロジェクトの両方を パスにスペースが含まれていないディレクトリに置いてみてください。

開発モードでのプロジェクトのインストール

簡単にプロジェクトの開発をするために、 setup.py develop コマンドを 使ってプロジェクトを開発用 egg として作業用スペースに “登録” する必要が あります。これをするために、 プロジェクトの作成 で作成した “tutorial” ディレクトリに移動します。そして virtualenv の Python インタプリタ を使って “setup.py develop” コマンドを実行します。

UNIX の場合:

$ cd tutorial
$ ../bin/python setup.py develop

Windows の場合:

c:\pyramidtut> cd tutorial
c:\pyramidtut\tutorial> ..\Scripts\python setup.py develop

このコマンドの実行に成功すると、コンソールに次のような出力が行われるでしょう:

Finished processing dependencies for tutorial==0.0

テストの実行

開発モードでインストールした後で、プロジェクトに対するテストを実行する ことができます。

UNIX の場合:

$ ../bin/python setup.py test -q

Windows の場合:

c:\pyramidtut\tutorial> ..\Scripts\python setup.py test -q

テストの実行に成功すると、次のような出力が見られるはずです:

.
----------------------------------------------------------------------
Ran 1 test in 0.094s

OK

テストカバレッジ情報の抽出

nosetests コマンドを実行してテストカバレッジを見ることができます。 これは setup.py test と同じ方法でテストを実行しますが、追加の “カバレッジ” 情報を提供し、そのプロジェクトの行がテストで “カバーされて いる” (もしくはカバーされていない) かを抽出します。

この機能を動かすには、 virtualenv に追加で 2 つのパッケージ nosecoverage をインストールする必要があります。

UNIX の場合:

$ ../bin/easy_install nose coverage

Windows の場合:

c:\pyramidtut\tutorial> ..\Scripts\easy_install nose coverage

nosecoverage をインストールすると、実際にカバレッジテストが 実行できます。

UNIX の場合:

$ ../bin/nosetests --cover-package=tutorial --cover-erase --with-coverage

Windows の場合:

c:\pyramidtut\tutorial> ..\Scripts\nosetests --cover-package=tutorial ^
      --cover-erase --with-coverage

成功すると、次のような出力が見られるでしょう:

.
Name               Stmts   Miss  Cover   Missing
------------------------------------------------
tutorial              11      7    36%   9-15
tutorial.models       17      0   100%
tutorial.scripts       0      0   100%
tutorial.tests        24      0   100%
tutorial.views         6      0   100%
------------------------------------------------
TOTAL                 58      7    88%
----------------------------------------------------------------------
Ran 1 test in 0.459s

OK

私たちのパッケージは 100% のテストカバレッジではないようです。

データベースの初期化

データベースを初期化するために initialize_tutorial_db console script を使用する必要があります。

tutorial ディレクトリ (development.ini のあるディレクトリ) の中 にいることを確認して、次のコマンドをタイプしてください:

UNIX の場合:

$ ../bin/initialize_tutorial_db development.ini

Windows の場合:

c:\pyramidtut\tutorial> ..\Scripts\initialize_tutorial_db development.ini

コンソールに対して次のような出力が行われるはずです:

2011-11-26 14:42:25,012 INFO  [sqlalchemy.engine.base.Engine][MainThread]
                              PRAGMA table_info("models")
2011-11-26 14:42:25,013 INFO  [sqlalchemy.engine.base.Engine][MainThread] ()
2011-11-26 14:42:25,013 INFO  [sqlalchemy.engine.base.Engine][MainThread]
CREATE TABLE models (
      id INTEGER NOT NULL,
      name VARCHAR(255),
      value INTEGER,
      PRIMARY KEY (id),
      UNIQUE (name)
)
2011-11-26 14:42:25,013 INFO  [sqlalchemy.engine.base.Engine][MainThread] ()
2011-11-26 14:42:25,135 INFO  [sqlalchemy.engine.base.Engine][MainThread]
                              COMMIT
2011-11-26 14:42:25,137 INFO  [sqlalchemy.engine.base.Engine][MainThread]
                              BEGIN (implicit)
2011-11-26 14:42:25,138 INFO  [sqlalchemy.engine.base.Engine][MainThread]
                              INSERT INTO models (name, value) VALUES (?, ?)
2011-11-26 14:42:25,139 INFO  [sqlalchemy.engine.base.Engine][MainThread]
                              (u'one', 1)
2011-11-26 14:42:25,140 INFO  [sqlalchemy.engine.base.Engine][MainThread]
                              COMMIT

成功です! 現在の作業ディレクトリに tutorial.db ファイルができている はずです。このファイルは、単一のテーブルが定義された SQLite データベース (models) になります。

アプリケーションの起動

アプリケーションを起動します。

UNIX の場合:

$ ../bin/pserve development.ini --reload

Windows の場合:

c:\pyramidtut\tutorial> ..\Scripts\pserve development.ini --reload

成功すると、コンソールに次のような出力が見られるでしょう:

Starting subprocess with file monitor
Starting server in PID 8966.
Starting HTTP server on http://0.0.0.0:6543

これは、サーバーがリクエストを受け付ける準備ができていることを意味します。

この時点で、ウェブブラウザで http://localhost:6543/ を開くと、 生成されたアプリケーションのデフォルトページが表示されるでしょう。

ページの右側に “デバッグツールバー” アイコンがあるのに気が付くと思います。 アイコンの用途について詳しいことは The Debug Toolbar で読むことができます。 それは開発中にアプリケーションに関する情報を取得することができます。

alchemy scaffold が決めてくれること

alchemy scaffold を使ってプロジェクトを作成すると、次のことが仮定されます:

  • データベースアクセスツールとして SQLAlchemy を使用する
  • URLからコードへのマッピング方法に url dispatch を使用する

Note

Pyramid は任意の永続化ストレージ機構をサポートしています (例えば、オブジェクトデータベースやファイルシステムなど)。 また、URLからコードへのマッピングを行う追加の方法もサポートします (traversal)。 しかし、このチュートリアルの用途には url dispatch と SQLAlchemy だけを使用します。