Python (2.6.6 — EPD 6.3-1 (32-bit)) can not find a binary executable when using
call(cmmd, shell=True)
On Mac OS 10.6.8, started from Eclipse/Pydev, and returns that sh could not find the executable. Running
print os.environ['PATH']
returns the default paths:
/usr/bin:/bin:/usr/sbin:/sbin
Now, running this executable or the script for that matter from any shell is not a problem and its path is added in /etc/profile, ~/.profile and in /etc/paths
Any ideas on how to configure Pydev? The run configuration seems in order, i.e. it picks up the correct python version.
Note:edited for clarity
There is a difference between a login shell and a non-login shell. When run by python launched from Eclipse, your shell will start as a non-login shell, which will NOT load the
~/.profile. This article has the details. So you need to make sureos.environhas the directory where your executable lives in it before you callsubprocess.callor you can just give an absolute path to the executable, or make sure your shell script (if your executable is just a shell script) uses absolute paths or manages its own PATH environment variable. You can also pass a dictionary of environment variables tosubprocess.Popento get detailed control of the subprocess’s environment and many other aspects.