10

( )、、またはその他のプロトコルimportを使用して、インターネット経由で Python モジュールを使用することは可能ですか? もしそうなら、どのように?そうでない場合、なぜですか?httpsftpsmb

それは、Python がより多くの 1 つのプロトコルを使用するようにし (ファイルシステムを読み取る)、他のプロトコルも使用できるようにすることだと思います。はい、何倍も遅くなることに同意しますが、いくつかの最適化と将来の帯域幅の拡大により、確実にバランスが取れます.

例えば:

import site

site.addsitedir("https://bitbucket.org/zzzeek/sqlalchemy/src/e8167548429b9d4937caaa09740ffe9bdab1ef61/lib")

import sqlalchemy
import sqlalchemy.engine
4

4 に答える 4

4

別バージョン、

私はこの答えが好きです。それを適用すると、HTTPを介したincludeのルック アンド フィールに似た、少し単純化されましたjavascript

結果は次のとおりです。

import os
import imp
import requests

def import_cdn(uri, name=None):
    if not name:
        name = os.path.basename(uri).lower().rstrip('.py')

    r = requests.get(uri)
    r.raise_for_status()

    codeobj = compile(r.content, uri, 'exec')
    module = imp.new_module(name)
    exec (codeobj, module.__dict__)
    return module

使用法:

redisdl = import_cdn("https://raw.githubusercontent.com/p/redis-dump-load/master/redisdl.py")

# Regular usage of the dynamic included library
json_text = redisdl.dumps(host='127.0.0.1')
  • ヒント-import_cdn関数を共通ライブラリに配置すると、この小さな関数を再利用できます
  • http経由でそのファイルに接続できない場合、失敗することに注意してください
于 2015-12-28T10:01:30.747 に答える