子进程popen Kivy的第二个实例给出了模块导入错误

时间:2016-06-27 23:40:35

标签: python kivy

我正在尝试运行两个Kivy实例。我知道你不应该按照文档尝试打开第二个窗口但是我需要第二个窗口,离不开它。它要么打开第二个窗口,要么在Kivy上保释。

鉴于我所研究的每个Python GUI库都具有不那么吸引人的美学,我更倾向于坚持使用Kivy。如果我错了,请随意纠正我。

这是问题所在。我无法打开第二个应用程序文件。它会在第1行导入Kivy时被捕获。

### call to popen from main.py
class RefreshButton(Button):
    pass
    def launchChild(self):
        import subprocess
        subprocess.Popen('python test.py', shell=True)

    def on_press(self):
        self.launchChild()

### test.py
from kivy.app import App  ### <- Line 1 ImportError: No module named kivy.app
from kivy.uix.button import Button

class MainApp(App):
    def build(self):
        b = Button(text='Test')
        return b


if __name__ == '__main__':
    MainApp().run()

1 个答案:

答案 0 :(得分:0)

根据评论,您在IDE中使用的python解释器与 python3.4 之间存在不匹配,而 python 在您的< em> subprocess 调用很可能是python2。要解决它你只需要指定使用python3解释器,你也不需要 shell = True ,你只需传递一个args列表:

 subprocess.Popen(['python3',  'test.py'])