在使用subprocess.call时,Python和Mac OS X中的路径环境变量

0 投票
1 回答
3517 浏览
提问于 2025-04-16 21:51

在使用

call(cmmd, shell=True)

时,Python(版本2.6.6 -- EPD 6.3-1(32位))找不到可执行文件。

在Mac OS 10.6.8上,从Eclipse/Pydev启动时,返回的错误是sh找不到可执行文件。运行

print os.environ['PATH']

会返回默认的路径:

/usr/bin:/bin:/usr/sbin:/sbin

现在,从任何命令行运行这个可执行文件或脚本都没有问题,而且它的路径已经添加到/etc/profile、~/.profile和/etc/paths中。

有没有什么想法可以配置Pydev?运行配置看起来没问题,也就是说,它能正确识别Python的版本。

注意:为了更清晰而进行了编辑。

1 个回答

2

登录shell和非登录shell是有区别的。当你在Eclipse中运行Python时,你的shell会以非登录shell的方式启动,这样就不会加载~/.profile这个文件。这篇文章有详细说明。所以在你调用subprocess.call之前,你需要确保os.environ中包含了你的可执行文件所在的目录,或者你可以直接给出可执行文件的绝对路径,或者确保你的脚本(如果你的可执行文件是一个脚本的话)使用绝对路径,或者自己管理它的PATH环境变量。你还可以将一个环境变量的字典传递给subprocess.Popen,这样可以更详细地控制子进程的环境和其他很多方面。

撰写回答