【问题标题】:python subprocess call not doing anythingpython子进程调用不做任何事情
【发布时间】:2017-08-11 05:02:05
【问题描述】:

我正在创建一个 GUI,通过单击按钮启动各种应用程序。为了让我不必手动打开它们。

我目前正在尝试启动 Android 模拟器,我可以使用以下命令执行此操作:emulator @Nexus_5X_API_22 ...非常简单。

我正在尝试在 python 中使用: subprocess.Popen(["emulator @Nexus_5X_API_22"],shell = True)

但是,调用它时似乎没有任何反应。打印语句返回 '127',不确定这是什么推断?

我做错了什么?

-----------编辑-----------

这是一些代码,我正在使用 Kivy。

class RunTests(Screen):
def __init__(self,**kwargs):
    super(RunTests,self).__init__(**kwargs)

    layout1 = StackLayout(orientation='lr-bt')

    runbutton = Button(text='run all', size_hint=(0.8,0.05))
    runbutton.bind(on_press=self.runAll)

    layout1.add_widget(runbutton)

    self.add_widget(layout1)

def runAll(self,*args):
    subprocess.Popen(["emulator", "@Nexus_5X_API_22"])

【问题讨论】:

    标签: android python terminal subprocess


    【解决方案1】:

    好的,所以@Youn Elan 建议使用完整路径。

    subprocess.Popen(['/Users/User/Library/Android/sdk/tools/emulator -netdelay none -netspeed full -avd Nexus_5X_API_22'],shell=True)
    

    这确实有效。

    【讨论】:

      【解决方案2】:

      问题在于您没有将参数分成列表中的单独项目。因为您说“shell=True”,所以子进程试图运行一个名为"emulator\ @Nexux_5X_API_22" 的程序。分离出参数,跳过shell

      subprocess.Popen(["emulator", "@Nexus_5X_API_22"])
      

      【讨论】:

        猜你喜欢
        • 2019-02-28
        • 1970-01-01
        • 2023-04-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-04-22
        • 2017-04-23
        • 2020-10-14
        相关资源
        最近更新 更多