Есть ли способ открыть 64-битный exe-файл из потока, используя 32-битный python 2.7 на windows? - PullRequest
1 голос
/ 31 января 2020

У меня есть пользовательский интерфейс tkinter, который я встраиваю в 32-битную python 2.7, и я сделал кнопку, с помощью которой я хотел бы открыть внешнее приложение (64-битный exe-файл), не прерывая его. Моя кнопка запускает поток, который, в свою очередь, запускает подпроцесс с новым окном консоли и вызывает полный путь к моему exe-файлу. Если я вписываю этот полный путь в окно cmd вне сценария python, мое приложение открывается успешно.

Я получаю сообщение об ошибке: WindowsError: [Ошибка 193]% 1 не является допустимым приложением Win32

Я понимаю, что для этого требуется либо 64-битная версия python, либо 32-битная версия моего приложения. Тем не менее, есть ли альтернативное решение, которое можно решить с помощью кода вместо изменения моей версии python или приложения? Для простоты я включил пример кода ниже.

Спасибо за помощь !!

self.VMD_button = tk.Button(self, text="Launch VMD", command=self.show_VMD)

def show_VMD(self):
     VMD_cmd = '"%s"' % "C:\VMD.exe"
     thread= Thread(target=self.call_subprocess, args=[VMD_cmd])
     thread.daemon = True
     thread.start()

def call_subprocess(self, cmd):
     proc = subprocess.Popen(cmd, creationflags=subprocess.CREATE_NEW_CONSOLE).wait()

1 Ответ

0 голосов
/ 31 января 2020

Насколько я знаю, ответ "нет". И то, что происходит, это то, что вы только что получили. Ваше приложение 32-битное, и поэтому оно знает только о 32-битных приложениях. Возможно, он не сможет запустить 64-битный процесс. Противоположный случай будет работать , поскольку существует обратная (но не прямая) совместимость.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...