#!/usr/bin/env python
I put that at the top of a script. I've seen that should make the script runnable from the command line without the need for python programname.py
. Unless I'm misunderstanding I should be able to use programname.py
as long as I have the above line at the top of the script. Is this correct?
It isn't working for me I just get an error indicating that I would have to use python
at the beginning of the 'call'.
You can pretty much universally run without the shebang (#!
) with
python myscript.py
Or nearly equivalently (it places the current directory on your path and executes the module named myscript
) (preferably do this!):
python -m myscript
from the command line, as long as you have Python installed and on your path environment variable (i.e. set to run with python
, which, if installed, would typically be the case).
#!
) are a Unix thing.The shebang, as you're using it, is typically for running on a Unix platform (typically Apple or Linux). Windows would typically require cygwin to use the shebang.
You can usually default to whatever python is available on your system path with:
#!/usr/bin/env python
Assuming you're on a Unix, you might try other locations for your python setup, like:
#!/usr/bin/python
You can see what python you're currently using by using the unix which
command, so if you want to see where your python is coming from, use this command:
which python
or on Windows (cygwin probably can run the shebang):
where python
On Linux/Unix, you'll need execution perms to run the file as well, in that manner. Use chmod
chmod +x myscript.py
(chmod also may apply to Cygwin in Windows)
If you're not running as root, you may require sudo
, and that would be
sudo chmod +x myscript.py
And then attempt to run (within the same directory) with
./myscript.py