在使用subprocess.call时,Python和Mac OS X中的路径环境变量
在使用
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
,这样可以更详细地控制子进程的环境和其他很多方面。