重複の可能性:
Python での動的モジュールのインポート
近いうちに一連のファイルを作成するつもりですが、それを整理する最善の方法は、リストを作成することです。そのリストはファイルの一番上にあり、その後、処理するコードがとんでもない量になります。そのリストが何を制御し、どのように動作するか。上記のリストを一度だけ書き込もうとしています。このリストは、次の形式のフォルダーとファイル名のリストです。
[(folder/filename, bool, bool, int), (folder/filename, bool, bool, int)]
ご覧のfolder/filename
とおり、同じです(一種)。ファイル名は.py
末尾にフォルダ名が付いていますが、 import XXX を実行すると import XXX.py を実行する必要がないため、問題が発生することはないと思います。
私が直面している問題は、この方法を使用してインポートすることです...
for (testName, auto, hardware, bit) in testList:
print(testName)
paths = "\\" + testName
print paths
addpath(paths)
sys.modules[testName] = testName # One of a few options I've seen suggested on the net
print("Path Added")
test = testName + ".Helloworld()"
eval(test)
したがって、私が持っているテストごとに、名前を出力し、パスを含む文字列を組み立てます ( "\\testName"
)。この例では、テスト パスを出力し、パスをリストに追加します ( sys.path.append(path)
)。テストメインモジュールによって実行されeval
、最終的に評価される文字列。
ご覧のとおり、現在、上部にインポートのリストを表示する必要があります。の内容と呼ばれるモジュールではなく、と呼ばれるモジュールを見つけようとするため、単純にインポートを行うことはできませんtestName
(の内容は、インポートしたいモジュールの名前です) 。testName
testName
testName
これが行われた場所の例をいくつか見ましたが、私の状況で機能するものは見つかりません。誰かが文字通りそれを行うコードのチャンクを投げることができれば、それは素晴らしいことです.
また、eval を使用するためにハングアップしたり、描画したり、四分の一になったりしないように要求します。eval は非常に制御された環境で使用されます (循環するリストは .py ファイル内にあるため、「エンド ユーザー」は使用しないでください)。それを台無しにする)。