0

私はPythonにかなり精通していますが、これは私にとってかなり長い間問題でした。

私のスタジオのアーティストが Nuke 内で使用するスクリプトでいっぱいのフォルダーがあります。内部からアクセスできるようにするには、ロード時に Nuke が読み取る init.py ファイルを介してインポートする必要があります。

これらの値のリストを作成できるようにしたいと考えています。グロブ検索を使用して該当するものをすべて見つけるか、次のような宣言されたリストを使用します。

my_list = ['mod_1', 'mod_2', 'mod_3']

しかし、これを処理できる方法を見つけることができませんでした。変数名を使用してモジュールを見つけ、次の方法でインポートできることはわかっています。

module = getattr(__import__(package, fromlist=[name]), name)

また

module = __import__(var)

ただし、これらの方法ではどちらも、インポートするモジュールに名前を割り当てる必要があります。

私はこれらの線に沿って何かをする方法を探しています:

capture = glob.glob('/scriptLocation/*.py')
for i in capture:
    import i

また

my_list = ['mod_1', 'mod_2', 'mod_3']
for i in capture:
    import i

ティア!

4

1 に答える 1

0

これを試して:

modules = map(__import__, moduleNames)

詳細については、このリンクを確認してください: (例 16.15)

>>> moduleNames = ['sys', 'os', 're', 'unittest'] 1
>>> moduleNames
['sys', 'os', 're', 'unittest']
>>> modules = map(__import__, moduleNames)        2
>>> modules                                       3
[<module 'sys' (built-in)>,
<module 'os' from 'c:\Python22\lib\os.pyc'>,
<module 're' from 'c:\Python22\lib\re.pyc'>,
<module 'unittest' from 'c:\Python22\lib\unittest.pyc'>]
>>> modules[0].version                            4
'2.2.2 (#37, Nov 26 2002, 10:24:37) [MSC 32 bit (Intel)]'
>>> import sys
>>> sys.version
'2.2.2 (#37, Nov 26 2002, 10:24:37) [MSC 32 bit (Intel)]'
于 2013-10-08T21:15:06.420 に答える