2

所以正如标题所说,我在 Fedora 下启动一个新的子进程时遇到了问题。现在的情况是,我有一个主要的 python 脚本,我使用以下命令启动其他几个 python 进程:

import subprocess
subprocess.Popen(['python', '-m', 'first_child.run', 'start'], shell=False)

现在这在 MacOS、debian 和 windows 上运行良好。在 Fedora 上,如果我从 Aptana 3 IDE 运行它,它也可以工作,唯一的问题是当我尝试从终端运行这个主脚本时,我得到:

OSError: [Errno 2] No such file or directory

你知道这里有什么问题吗?

问候, 博格丹

4

2 回答 2

1

很抱歉,如果这是您已经想到的——但是调用子进程导致 OSError 的最常见原因是它找不到进程

http://docs.python.org/library/subprocess.html#exceptions

你绝对确定蟒蛇在你的道路上吗?

我知道你可能会指出你是从 python 可执行文件运行这个脚本的——但我想我会试一试,也许你在从终端运行它时指定了 python 的完整路径。

为了好玩,在调用子进程之前,您可以转储您的 PATH

import os
print os.environ['PATH']
于 2012-03-29T15:04:22.260 回答
1

这是您当前的工作目录。我不认为问题是它找不到 python,问题是它找不到first_child.run.

在启动子进程之前尝试打印os.getcwd(),看看它在终端和 IDE 中是否不同。

sys.executable附带说明一下,将它用作您在子进程中使用的 python 可能更可靠,而不是仅仅说 python。例如,subprocess.Popen([sys.executable, '-m', 'first_child.run', 'start'], shell=False)

于 2012-03-29T15:13:09.370 回答