4
>>> import_path('os.path.join')
<function join at 0x22d4050>

import_path(Python 2.6 以降で)最も簡単な書き方は? 最後のコンポーネントは常にモジュール/パッケージで呼び出し可能であると仮定します。

4

3 に答える 3

4

これはあなたが望むもののようです:

def import_path(name):
    modname, _, attr = name.rpartition('.')
    if not modname:
        # name was just a single module name
        return __import__(attr)
    m = __import__(modname, fromlist=[attr])
    return getattr(m, attr)

__import__キーワード引数を取らないPython 2.5 以前で動作させるには、次を使用する必要があります。

m = __import__(modname, {}, globals(), [attr])
于 2010-02-01T19:16:45.727 に答える
0

試す

def import_path(name):
  (mod,mem) = name.rsplit('.',1)
  m = __import__(mod, fromlist=[mem])
  return getattr(m, mem)

少なくとも

>>> import_path('os.walk')
<function walk at 0x7f23c24f8848>

そしていま

>>> import_path('os.path.join')
<function join at 0x7f7fc7728a28>
于 2010-02-01T19:04:50.937 に答える
0

どうやら次のように動作します。

>>> p = 'os.path.join'
>>> a, b = p.rsplit('.', 1)
>>> getattr(__import__(a, fromlist=True), b)
<function join at 0x7f8799865230>
于 2010-02-01T19:08:56.293 に答える