pythonのソースをweb越しにimportしてみる
普通さ、ライブラリはローカルに置くよね。 javascriptなんかはweb上に置いてあることもあるけれど、pythonはローカル。 いやあえて、pythonでもweb上のモジュールを自由にimport出来たら面白いんじゃないか? とか思った。 という訳で、試してみた。
import urllib2
import tempfile
import os
def ImportFromWeb(url):
# 一時ファイルを用意
out, name = tempfile.mkstemp(suffix='.py', dir='.')
out = os.fdopen(out, 'w')
# URLを開いて、一時ファイルに書き込む
source = urllib2.urlopen(url)
out.write(source.read())
# URL/ファイルを閉じる
source.close()
out.close()
# 一時ファイルをimportする
imp = __import__(os.path.basename(name)[:-3])
# 一時ファイルを削除
# ついでに.pycファイルも削除
os.remove(name)
if os.path.isfile(name[:-3] + '.pyc'):
os.remove(name[:-3] + '.pyc')
# importしたオブジェクトを返却
return imp
こんな感じ。
test = ImportFromWeb('http://example.com/python/source.py')
test.run()
みたいに使えます。
一度importしちゃえばソースは消しても問題ないみたいね。 まあ、動作は保証しかねますが。
あと、これを乱用するとサーバーの管理者に迷惑です。 頻繁に使う場合は、サーバー管理者に確認をとってください。一応ね。