A solutionは、Python 2のために利用可能であるが、それは、ファイルベースのインポートに適していますimportlib
に置き換えられているPythonの3Python 3のモジュールを文字列からインポートするには?この問題の
imp
で廃止されimp
モジュールを使用しています。具体的には、importlib.import_module
にはファイル名が必要です。文字列やファイルハンドラではありません。
私は、ファイルへのURLの内容をダンプし、それを
def initlog():
modulename = '_mylogging'
try:
import _mylogging
except ImportError:
r = requests.get('http://(...)/mylogging.py')
with open(modulename+'.py', "w") as f:
f.write(r.text)
finally:
import _mylogging
return _mylogging.MYLogging().getlogger()
をインポートすることで、回避策を作ったが、私は中間ファイルを避けるためにしたいと思います。
セキュリティ、ネットワークパフォーマンス、およびアベイラビリティの問題を別に置くと、は文字列をimportlib
に送りますか?(または私はio.StringIO
を使用することになり、その場合には、ファイルハンドラから)