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

时间:2011-07-19 14:58:17

标签: python macos path operating-system

Python(2.6.6 - EPD 6.3-1(32位))在使用

时找不到二进制可执行文件
call(cmmd, shell=True)

在Mac OS 10.6.8上,从Eclipse / Pydev开始,并返回sh无法找到可执行文件。正在运行

print os.environ['PATH']

返回默认路径:

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

现在,从任何shell运行此可执行文件或脚本都不是问题,其路径添加在/ etc / profile,〜/ .profile和/ etc / paths

有关如何配置Pydev的任何想法?运行配置似乎是有序的,即它选择正确的python版本。

注意:为清晰起见而编辑

1 个答案:

答案 0 :(得分:2)

登录shell和非登录shell之间存在差异。当从Eclipse启动的python运行时,你的shell将作为非登录shell启动,它不会加载~/.profileThis article has the details。因此,在调用os.environ之前,您需要确保subprocess.call包含可执行文件所在的目录,或者您只需提供可执行文件的绝对路径,或者确保您的shell脚本(如果您的可执行文件)只是一个shell脚本)使用绝对路径或管理自己的PATH环境变量。您还可以将环境变量字典传递给subprocess.Popen,以获得对子流程环境和许多其他方面的详细控制。