【发布时间】:2015-08-20 21:01:57
【问题描述】:
好的,所以我已经为此苦苦挣扎了一个多星期,并且我已经尝试了本网站和谷歌上的其他方法中提到的各种方法,但这里就可以了。我正在运行 python 2.7。我在父目录中有一个 python 脚本,它调用位于子目录中的第二个脚本。第二个脚本启动一个不同的线程并对第三个也是最后一个脚本进行 os.system 调用。第三个脚本需要导入位于父目录中的内容。有人能告诉我这个设置有什么问题吗?我确实在每个正在使用的文件夹中都有__init__.py。我确实尝试将相对父目录添加到路径中。我不确定我哪里出错了。
File Structure
Parent Directory
Python_Script_1.py
Imports_needed.py
__init__.py
Child Directory
Python_Script_2.py
Python_Script_3.py
__init__.py
方法一
Python_Script_2.py
import os
import sys
import multiprocessing
def listen():
listen_string = "python ~/path/Python_Script_3.py"
os.system(listen_string)
q = multiprocessing.Process(target=listen())
Python_Script_3.py
import sys
sys.path.append("..")
import Imports_needed
ImportError:没有名为“Imports_needed”的模块
方法二
Python_Script_2.py
import os
import sys
import multiprocessing
def listen():
listen_string = "python ~/path/Python_Script_3.py"
os.system(listen_string)
q = multiprocessing.Process(target=listen())
Python_Script_3.py
import sys
sys.path.append("..")
from .. import Imports_needed
ValueError: 尝试在非包中进行相对导入
关于方法2的问题,为什么每个目录都包含__init__.py,但它告诉我这不是一个包?
此外,我过去曾使用过与方法 1 非常相似的东西,但我看不出我的代码或文件结构之间有任何差异。如果有人有任何建议,我将不胜感激。谢谢。
编辑:抱歉,我忘记了描述中相当重要的内容。涉及到第三个文件,我完全忘记了... 很抱歉 :( Python_Script_2 通过多处理创建一个新线程并对 Python_Script_3 进行 os.system 调用。Python_Script_3 与 Python_Script_2 位于同一子目录中。Python_Script_3 正在导入尝试从父目录导入 Imports_needed.py 时出现问题。我已经更新了问题以反映这一点。(对不起,我知道这是我遗漏的一个主要细节,但它是一个复杂的包并且做更多的事情不仅仅是我要问的)
【问题讨论】:
标签: python-2.7 python-import python-multithreading