エキPy読書会07 (2011/1/18)

日時:

2011/1/18 19:30 - 22:00

範囲:

5章(p155) パッケージを作る

エキスパートPythonプログラミングの読書会7回目 2011年1回目です!

質疑応答(覚えてる範囲)

  • 質問: setup.py を書いたことある?OSS で公開してる?PyPI で公開してる?
    • A: 10人ぐらい、2人ぐらい、小宮さんだけ!

  • 質問: 普通はアプリを作る方法を説明しそうだけど、先にパッケージを作る章があるのはなぜ?
    • A: アプリを開発するのは、慣れてくると setup.py を書くようになる

      アプリの実装が終わると PyPI に登録して公開が終わる ExPy 本はアプリの開発手順を Python の世界で行うための手順を順番に説明している

  • 質問: develop でシステムの site-packages にインストールされるのを回避できますか?
    • A: virtualenv か、buildout を使ってシステムの site-packages にインストールしない方法があります

      目的は違いますが python 2.6 からユーザ毎の site-packages にインストールできます setup.py にオプション設定が必要なので、最も手軽なのは virtualenv を使う方法です

  • 質問: egg をダウンロードしてきて直接インストールすることはできますか?
    • A: egg は setuptools の easy_install コマンドでインストールできます

      $ easy_install xxx.egg setup.py で find_links に記載することで任意のサイトから egg をダウンロードしてインストールしてくれます

  • 質問: PyPI の classifiers で新規カテゴリを登録するにはどうするの?Joke カテゴリがほしい
    • A: ごめんなさい、聞き漏らしました(> <) 補足ください

      Web で PyPI にログインすると、リストからの選択で classifiers が表示される setup.py に未登録のカテゴリを記述すると無視されるんじゃないかな

  • 質問: PyPI の機能を提供するサーバパッケージはありますか?
    • A: haufe.eggserver, EggBasket,,, あともう1個あったと思います

      メンテナンスがされているか分かりません egg サーバはファイルを配布するだけのサーバと 登録も受け付けるサーバも2種類のミラーサーバがあります Python JP は前者のファイルをダウンロードするだけです Apache の DirectoryIndex とか、Google Sites とか、DropBox でも大丈夫です PyPI のメインサーバは遅いのでミラーサーバが増えているようです a.pypi.python.org, b.pypi.python.org, c.pypi.python.org, d.pypi.python.org, e.pypi.python.org

  • 質問: setup.py が高機能過ぎてコマンドが覚えられない
    • A: setup.py はデファクトスタンダードではありますが Python の標準ではありません

      今は setuptools があったり、distribute があったりしてさらにややこしい この後の章で setup.py を自動化するお話が出てくるので、 setup.py は必要に応じてリファレンスを見たり、書き換えたりする感じで良いです Python3 では distutils2 が標準になる予定です

  • 質問: パッケージのテンプレートが便利なのは具体的にどんなときですか?
    • A: Trac のプラグインのインストールが良い例です

      Trac プラグインを easy_install で環境にインストールしただけでは使えません その後に trac-admin コマンドや Web インタフェースでインストールする必要があります Trac 本体がプラグインを探すような仕組みになっていれば良いのに、、、 新規開発中のパッケージでテンプレートを使わなくても良いけど、 名前空間を分割するときに setup.py を書くか、テンプレートを利用するかの判断になります

  • 質問: 0.6 をリリースした後でマイナーバージョンアップしたいときにバージョンはどうする?
    • A: 最初から 0.6.0 をリリースしておいて3桁で管理するのが良さそう

      バージョンの付け方はお作法、流儀、ローカルルールで様々 自動的に付いた方が良いこともあるし、人間が付けた方が良いこともある(dev/rcとか)

参考