run python script directly from command line
bash, env, python, shebang, shell
Solution
Universal running of Python scripts
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).
Shebangs (`#!`) 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
Muddling through
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
Problem
``` #!/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'.