November 26, 2017 ポスト合唱コンクール
昨日学校の合唱コンクールがありました!Frodoのクラスはボロボロwですけど、なんとBourruのクラスが優勝したんですよ!
同学年のクラスの中でFrodoのクラスだけ賞にかすりもしないっていうw
やる気と練習量の差が如実に出ましたね!
やっぱり三年間やってきて最後だということもあり、若干の感傷がないわけでもないんですがそれは置いといて。
たまにはPythonistaっぽいことしないとなぁということで今回はこんなものを。
このモジュールはPythonで何か作ったけど依存関係まで考えて配布するのめんどくさい!っていうときにimport分の代わりとしてresolve関数を使えば配布先の環境にモジュールが存在しなかった場合、自動でこのモジュールと同階層にあるmodulesディレクトリに依存関係まで含めて要求モジュールをインストールしてくれるというものです。
ただしpipに依存しているので、配布先の環境にpipがなければ一緒ですが...。最近の環境でPython入っているのにpipがないということはないと思うのですが、Pythonのバイナリを含めて配布する場合は無理ということになってしまいます。
これからの課題はそこですね...。
この関数はmod_nameで指定された名前のモジュールをglobalsで指定された名前空間にインポートします。
標準関数の__import__と同等の機能を提供しますが、mod_nameで指定されたモジュールが見つからなかった場合、pipを用いてこのモジュールと同階層のmodulesディレクトリにモジュールをインストールします。
mod_distnameが指定された場合、pipでインストールするときのモジュール名としてmod_distnameが使用されます。
これからも基本的に週末更新の方針です。これからもBouFrawをよろしくお願いします!
同学年のクラスの中でFrodoのクラスだけ賞にかすりもしないっていうw
やる気と練習量の差が如実に出ましたね!
やっぱり三年間やってきて最後だということもあり、若干の感傷がないわけでもないんですがそれは置いといて。
たまにはPythonistaっぽいことしないとなぁということで今回はこんなものを。
このモジュールはPythonで何か作ったけど依存関係まで考えて配布するのめんどくさい!っていうときにimport分の代わりとしてresolve関数を使えば配布先の環境にモジュールが存在しなかった場合、自動でこのモジュールと同階層にあるmodulesディレクトリに依存関係まで含めて要求モジュールをインストールしてくれるというものです。
ただしpipに依存しているので、配布先の環境にpipがなければ一緒ですが...。最近の環境でPython入っているのにpipがないということはないと思うのですが、Pythonのバイナリを含めて配布する場合は無理ということになってしまいます。
これからの課題はそこですね...。
一応resolve関数の解説
引数名(位置指定の場合は位置) | 変数型 | 意味、効果 |
---|---|---|
mod_name (1番目) | str | import時のモジュール名 |
globals (2番目) | dict | import先の名前空間 (globals()で取得可能) |
mod_distname (3番目) | str | PyPI上のモジュール名 (省略可能・省略した場合mod_nameと同値) |
標準関数の__import__と同等の機能を提供しますが、mod_nameで指定されたモジュールが見つからなかった場合、pipを用いてこのモジュールと同階層のmodulesディレクトリにモジュールをインストールします。
mod_distnameが指定された場合、pipでインストールするときのモジュール名としてmod_distnameが使用されます。
mod_distnameが必要になる場合の例
- PyYAML (インポート時はyaml)
- wxPython (インポート時はwx)
など
最後に
気づけば二週間以上経ってました...。これからも基本的に週末更新の方針です。これからもBouFrawをよろしくお願いします!
Written by Frodo
コメント
コメントを投稿