現在、python 2.7.3 を使用しています。
find_module 関数のみを実装する sys.meta_path にインポート フックを追加しました。次のようになります。
class SvnImporter(object):
def find_module(self, fullname, *args):
if fullname.split(".")[0] == "load_from_svn":
exported_parent_dir = self.export_from_svn(fullname)
sys.path.append(exported_parent_dir)
return None
目的のモジュールを svn からエクスポートし、それをsys.pathSvnImporter
に追加して、通常の方法でインポートできるようにするだけです。
私が抱えている問題は、これらの通常インポートされたモジュールはすべて、特に指定しない限り、すべて相対インポートを行っていることです。
from __future__ import absolute_import
すべてのファイルの先頭。私が見ているエラーは次のようなものです:
module "load_from_svn.module1.socket" could not be loaded
私はすでにfrom __future__ import absolute_import
メインスクリプトの開始時に持っています - これにより、その後にロードされたすべてのモジュールのabsolute_importがオンになったと思いましたか? すべてのモジュールで相対インポートではなく絶対インポートを使用するにはどうすればよいですか?