Не удалось создать новую консоль с подпроцессом на Mac - PullRequest
0 голосов
/ 26 сентября 2019

Я разработал скрипт на python, который запускает несколько приложений Node.js на разных консолях.Он работает в Windows (Python версии 3.7.3), но не может заставить его работать на Mac (3.7.4_1).

Я продолжаю прокручивать документацию по Python, но не вижу ничего, что могло бы стать проблемой, ипара сообщений, которые я нахожу в переполнении стека, не решает мою проблему.

Вот ошибка:

subprocess.Popen(['node', 'index.js'],
creationflags=subprocess.CREATE_NEW_CONSOLE, shell=False)

AttributeError: модуль 'подпроцесс' не имеет атрибута 'CREATE_NEW_CONSOLE'

Вот код:

def __runProject(self, project):
    print(f'Starting project \'{project.projectName}\'...')
    subprocess.Popen(['node', 'index.js'], creationflags=subprocess.CREATE_NEW_CONSOLE, shell=False)
    os.chdir(self.__currentWorkingDirectory)

Заранее спасибо!

1 Ответ

1 голос
/ 26 сентября 2019

Действительно, терминал macOS отличается, когда дело доходит до запуска команды после открытия нового.Хитрость в том, чтобы использовать команду «открыть».Параметр должен быть командным файлом для запуска.Поэтому для запуска узла с параметром index.js следующий код создаст командный файл (start_node.command), который запускает узел с параметром из нового терминала:

with open("start_node.command", "w") as f:
    f.write("#!/bin/sh\nnode index.js\n")
    os.chmod('myfile', stat.S_IRUSR | stat.S_IWUSR | stat.S_IRGRP | stat.S_IWGRP | stat.S_IROTH)
subprocess.Popen(['/usr/bin/open', '-n', '-a', 'Terminal', 'start_node.command'], shell=False)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...