我知道这个问题经常被问到,但我有一个关于进口的非常具体的问题。我的文件结构如下:
<i>
基本上,这里发生的是我的程序(main/main.py
main/test_device.py
main/lib/instructions.py
main/device/android.py
main/temp/example.py
)创建几个较小的脚本(在main.py
中),然后尝试运行它们。但是,每个脚本都引用temp/
和lib/instructions.py
。此代码运行以下文件:
device/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)
个文件,但因为这些文件是脚本,所以我不能使用相对导入。我该如何导入这些库?
答案 0 :(得分:1)
将模块复制到python / lib / site-packages可以解决问题。
答案 1 :(得分:1)
如果我理解你,你需要在内容中构建的脚本能够从你的包中导入其他模块,但它不能要求正确的目标目录b / c它的类型尴尬的相对进口高于自己。尝试在加入列表之前添加此行
contents.insert(0, "import sys; sys.path.append('lib'); sys.path.append('device')")
现在已经很晚了。我在打电话,所以可能会有拼写错误,但我希望这对你有用。
编辑:根据当前工作目录的不同,您可能需要附加'../lib'或使用绝对路径