私はPythonのrunpyモジュールのメンテナーであり、現在のインポートシステムのメンテナーの1人です。インポートシステムは非常に柔軟性がありますが、いくつかの調整を行わずに卸売りを採用することはお勧めしません。
PythonのPEP 302で痛いのは、コアインポートシステムを使用に変換するのにどれくらい時間がかかったかです。10年の大部分において、インポートフックで複雑なことをしている人は誰でも、2つの部分を実装するために立ち往生しています。PEP 302ローダーの処理が標準ファイルシステムインポートメカニズムを介してインポートされたモジュールの処理も行うのは、今後の3.3のみです。おそらくそれを回避できる場合は、その間違いを繰り返さないようにしてください。
PEP 420(Python 3.3用に実装)は、インポーターが名前空間パッケージに一部を提供できるように、プロトコルにいくつかの追加を行います。また、Finder API定義の名前の問題も修正します(誤った名前の "find_module"をより正確な "find_loader"に効果的に置き換えます)。これは、数週間後に3.3rc1がロールバックするまでに、すべて言語仕様でより明確に文書化されるはずです。
もう1つの注目すべき問題は、PEP 302に具体的に記載されているアプローチのプロセスグローバル状態が多すぎることです。その経路をたどらないでください-他のモジュールを選択してインポートするのが少し簡単になるように、より一貫性のあるオブジェクトモデルに状態をカプセル化してみてください役立つことがあります)。
PEP 406(http://www.python.org/dev/peps/pep-0406/)では、状態のカプセル化を改善した、Pythonのアプローチの後方互換性のある進化について説明しています。ただし、最初からカプセル化された状態モデルがある場合は、それに応じてAPIを定義し、インポーターとローダーがグローバル状態にアクセスすることをまったく回避できます(代わりにアクティブエンジンへの参照が渡されます)。
PEP 302で欠けているもう1つの要素は、インポーターが提供するモジュールのイテレーターをインポーターに要求する機能です(これは、docstringを抽出するフリーズユーティリティや自動ドキュメントユーティリティなどに必要です)。信じられないほど便利なので、おそらくget goから標準化する方が良いでしょう:http : //docs.python.org/dev/library/pkgutil#pkgutil.iter_modules(おそらく最終的に正式に指定されたものに引き上げるでしょう) Python 3.4のAPI)
最後のコメントは、インポートシステムとローダーオブジェクトの責任分担をよく見る必要があるということです。特に、「load_module」APIを個別の「init_module」および「exec_module」ステップに分割することを検討してください。これにより、ローダーがインポート状態と直接対話する必要がある程度を最小限に抑えることができます。
PEP 302とimportlibは、より柔軟なインポートシステムの優れた出発点ですが、回避する価値のある間違いは間違いなくあります。