This question concerns running python files in terminal that are not stored in the home directory. I think I have solved the first bit of this puzzle by modifying my path so that it includes the directory where my python programs are stored.
So where as initially
echo $PATH would yield the following: /usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin
it now yields:
/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin:/Users/paulpatterson/Documents/Python
However despite the fact that the correct folder is now in my path, none of the python files within this folder run. For example there is a file in there called recap.py, when I open terminal and type in:
python recap.py
I get:
python: can't open file 'recap.py': [Errno 2] No such file or directory
If I simply type in recap.py (i.e. omitting the ‘python’ bit), I get:
-bash: /Users/paulpatterson/Documents/Python/recap.py: Permission denied
Can anyone enlighten me? Ideally I want to set it up so as soon as terminal opens all I need to do is type the file name and not even type python.
I’ve spent hours trying to sort this out, any help is appreciated.
Paul.
Including the directory where a command lives in your $PATH means you can run commands in that directory from anywhere. But in your first example, you are running the command “python” with recap.py as an argument. So your shell does not search your $PATH to find where recap.py lives. To make recap.py runnable as a command by itself, see this:
http://en.wikipedia.org/wiki/Shebang_(Unix)
In short, you need to include
#!/usr/bin/env pythonas the first line, and chmod the file to be executable (chmod u+x recap.py).