0

この質問が頻繁に寄せられることは承知していますが、インポートに関して非常に具体的な問題があります。次のようなファイル構造があります。

main/main.py
main/test_device.py
main/lib/instructions.py
main/device/android.py
main/temp/example.py

基本的に、ここで起こっていることは、私のプログラム ( main.py) がいくつかの小さなスクリプト ( ) を作成し、temp/それらを実行しようとすることです。ただし、これらのスクリプトはそれぞれ と を参照lib/instructions.pydevice/android.pyます。このコードは、次のファイルを実行します。

name = "temp/test_" + str(program_name) + ".py"
input_file = open("test_device.py", "r")
contents = input_file.readlines()
input_file.close()
contents.insert(7, "program = [" + ", ".join(str(i) for i in instructions) + "]\r\n")
contents.insert(8, "count = " + str(program_name) + "\r\n")
contents = "".join(contents)
input_file = open(name, "w+")
input_file.write(contents)
Popen("python " + name)

すべてのディレクトリに__init__.pyファイルがありますが、これらのファイルはスクリプトであるため、相対インポートを使用できません。これらのライブラリをインポートするにはどうすればよいですか?

4

2 に答える 2

1

モジュールを python/lib/site-packages にコピーすると、問題が解決します。

于 2016-03-31T09:01:54.117 に答える
1

私があなたを理解している場合、パッケージから他のモジュールをインポートできるようにするには、コンテンツに作成しているスクリプトが必要ですが、そのような厄介な相対インポートのために適切なターゲットディレクトリを要求することはできませんそれ自体の上。リストを結合する前に、この行を追加してみてください

contents.insert(0, "import sys; sys.path.append('lib'); sys.path.append('device')")

遅くなりましたが、携帯電話を使用しているため、タイプミスがあるかもしれませんが、うまくいくことを願っています。

編集:現在の作業ディレクトリに応じて、「../lib」を追加するか、絶対パスを使用する必要がある場合があります

于 2016-03-31T09:36:23.320 に答える