python - 无法在 Mac 上创建带有子进程的新控制台

标签 python python-3.x macos subprocess

我开发了一个 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/

相关文章:

python-3.x - 使用 Python Pillow 裁剪图像

python - 安装emscripten需要什么版本的python?

node.js - 为开发环境分配一个域名到localhost

macos - NSTextView 的 insertText 方法在 OS X v10.11 中已弃用。替代品是什么?

python - Flask 中的 'endpoint' 是什么?

Python: AttributeError: 'module' 对象没有属性 'WD_BREAK'

python - 使用 python sdk 从 azure 存储中提取指标

python - for-loop 根据 pandas 数据帧定义生成 'cannot insert {}, already exists' 错误

python3通过分隔符将大文件分割成小文件(不是大小,行)

swift - 将 NSbutton 连接到从 Xib 加载 NSView 的方法的代码