アーカイブ

PythonJavaのjarのようなアーカイブを作成する方法がないかと思って探して唯一zipimportというのを見つけた。しかしsys.pathにzipファイルを追加しないといけないのが面倒。他にもっと良い方法はないのだろうか?結局、まとまったライブラリを配布するにはpycにしてパッケージかモジュールにしてsetuptoolsやdistutilsなどでインストーラを作って配布するのが普通なのかな?配布する際に間違って公開したくないソースファイルを配布してしまったら危ない。あともし手動で単にsite-packagesに上書きコピーするだけだとバージョンアップして削除したモジュールがある場合pycファイルが残ってしまう。インストーラが必須ということになる。


Cythonで複数のpyxファイルを1つのpydファイルにアーカイブできるのかと思ったら、1つのpyxが1つのpydになるだけだった。あまり調べていないが1つのpydにするやり方があるのだろうか?Pythonもjarみたいな正式なアーカイブの仕組みがあれば良いのに。しかしjarもclasspathを通す必要あるので同じことかな?site-packagesに入れないといけないというのは、あまりポータビリティがないような気がする。site-packagesに入れて環境を変えるのでなく、例えば1つのアプリのみでモジュールの使い捨てのテストがしたい。zipimportでもsys.pathに追加する1行を追加するだけだが。しかし、pydファイルはzipに含めることはできないので完璧ではない。そういう意味でpycのままで配布するのが無難かな。


それにしてもCythonでビルドしていたらジェネレータと入れ子の関数が使えないのはかなりの制限だと思う。その部分を回避して使うとなると、ちょっとした事にしか使えない。Python 3.0の全ての機能に対応してくれたらかなり使えそう。自作ライブラリのC言語化はそれまで待つしかなさそう。