我开发了一个 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:模块“subprocess”没有属性“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)
提前谢谢您!
最佳答案
事实上,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)
关于python - 无法在 Mac 上创建带有子进程的新控制台,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58109766/