脚本的绝对和相对导入

时间:2016-03-31 08:11:59

标签: python import relative-import

我知道这个问题经常被问到,但我有一个关于进口的非常具体的问题。我的文件结构如下:

<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) 个文件,但因为这些文件是脚本,所以我不能使用相对导入。我该如何导入这些库?

2 个答案:

答案 0 :(得分:1)

将模块复制到python / lib / site-packages可以解决问题。

答案 1 :(得分:1)

如果我理解你,你需要在内容中构建的脚本能够从你的包中导入其他模块,但它不能要求正确的目标目录b / c它的类型尴尬的相对进口高于自己。尝试在加入列表之前添加此行

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

现在已经很晚了。我在打电话,所以可能会有拼写错误,但我希望这对你有用。

编辑:根据当前工作目录的不同,您可能需要附加'../lib'或使用绝对路径