'how to run python script without typing 'python ...'

I want to run a python script without explicitly having to call "python" every time in my shell. I've tried to add the shebang #!/path/to/python but this does not seem to work. Does anyone know a work around this? Many thanks.



Solution 1:[1]

It didn't really apply to your personal scripts but as you are quoting beets, note that it is also possible to automate this action when you are distributing your packages, thanks to setuptools entry_point option.
So if you are distributing a package like myModule and want to make the main_function() function accessible via typing mymodulescript in the console you would probably add something like this to your setup.py file :

setup(
    # your other arguments ..
    entry_points={
        'console_scripts': [
            'mymodulescript = myModule:main_function'
        ]
    }
)

Solution 2:[2]

  1. Add a line at the top of your script:

    #! /usr/bin/env python
    
  2. Rename your script from script_name.py to script_name
  3. make the script executable: chmod +x script_name

The line at the top selects the same python that you get when typing python at the prompt. You can also specify a direct path:

#!/opt/python/3.6/bin/python

Solution 3:[3]

Another workaround could be to use an alias defined in the .bashrc :

e.g. add the following line in your .bachrc file :

alias mypythonalias="python mypyrhonfile.py"

type in terminal :

source ~/.bashrc

and then you may simply type:

mypythonalias

to execute the python file.

Solution 4:[4]

Ensure you are able to run /path/to/python on your terminal. And make sure you have given execute permission for your python file. You can give permission for the file by

chmod +x mypythonfile.py

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 djvg
Solution 2 Anthon
Solution 3 tripleee
Solution 4 darioo