構成、ビルドのツール¶
どのプログラミング言語を使うにしろ、構成やビルド、それからリリースに関するツールは重要です。 伝統的なソフトウェアでは autotools と Makefile が使われていますが、 これから勉強するには読みにくく、依存関係の記述が難しいなど、いくつかの問題も抱えています。
Python で記述された構成管理のツールにもいくつかの選択肢があり、それぞれに長所と短所があります。 これらのツールの多くは、対象とするソフトウェアのプログラミング言語とは独立しています。 したがって、C 言語で記述されたソフトウェアを Python 製のツールで管理することもできます。
ここでは次の3つのツールに関するリンクを紹介します。 詳しくはそれぞれのリファレンスを参照してください。 細かい TIPS などは検索エンジンで探してみましょう。
いくつかのビルドシステムの比較記事はこちらにまとめられています。
なお、プロジェクトのプログラミング言語を Python に限定する場合は setup.py を試すことから始めましょう。
- setup スクリプトを書く - docs.python.jp
zc.buildout¶
いくつかのページのリンクとその序文を引用します。詳細はそれぞれのページを読んでください。 時間はかかると思いますが、得られるものは多いでしょう。
zc.buildout (Python Hack-a-thon 4 ハンズオン 中級コース): | |
---|---|
buildout はPythonベースのビルドシステムです。 パーツという単位で アプリケーションを作成、組み立て、配置などを行い、非Pythonベースのものも構築可能です。 | |
zc.buildoutを使ってプロジェクトを管理する: | |
eggs、setuptoolsと依存管理、そして開発環境のセットアップにzc.buildoutを使う方法を学びます。 | |
rod.recipe.mongodb 1.2.2: | |
Buildout recipe for downloading and installing mongoDB. (MongoDB をダウンロードしてインストールするレシピ) |
SCons¶
最近はあまり活発に開発されていない印象です。 2014年3月に 2.3.1 がリリースされており、これが Python 2.7 以前をサポートする最後のバージョンになるそうです。 リリース記事には、今後は Python 3.x 系のサポートにシフトすると記載されています。
SConsMakefileを書くのに疲れた人のためのSCons: | |
---|---|
SConsはmakeやAntのように数多くあるビルドツールのうち一つであり、Pythonで書かれている。 ビルド設定のファイルをPythonで記述することができ、またSCons自身が依存関係解析の機能を持っているため、 makeと比べるとずっと簡単にビルド環境を構築することができる。 |
Waf¶
waf は SCons のやや古いバージョンから fork した実装です。 単一バイナリの配布なので特別なインストールの必要がなく、 ダウンロードしたファイルを環境変数 PATH の通ったディレクトリに配置して実行ビットを立てれば使い始められます。 Python 2.x 系でも Python 3.x 系でも動きます。
waf チュートリアル (純粋関数型雑記帳): | |
---|---|
waf は Python ベースのビルドシステムです。 同様のことを行うツールとして、Autotools、Scons、CMake、Antなどがあります。 Sconsからの派生で、比較的新しいソフトウェアです。 |
次のようにダウンロードして配置すればすぐに利用可能です。 処理は wscript という設定ファイルに記述してください。
$ cd /path/to/your/bin
$ curl -O http://ftp.waf.io/pub/release/waf-1.7.16
$ chmod +x waf-1.7.16
$ ln -s waf-1.7.16 waf
$ waf
Windows の場合は waf.bat のようなラッパーを用意してあげましょう。
@echo off
python %~dp0\waf %*
Waf は Node.js のビルドシステムとしても使われていました(現在は gyp に移行しています)。 作者の Ryan Dahl は複雑だとも述べていましたので、好きずきと言えます。