Running python script from terminal without .py extension
Solution 1
Unix/Linux file systems do not rely on extensions the way windows does. You should not need the .py
at the end of a file to run it.
You can run the file by either calling it with the interpreter:
python ScriptFile
Or by marking it executable and defining the interpreter on the first line (e.g. #!/usr/bin/python
).
If you are unable to execute the file with:
/Path/to/ScriptFile
check the permissions with
ls -l ScriptFile
You may need to add the executable flag and chmod
it so it will execute for you.
If you are using custom scripts regularly you may want to make sure the directory you store them is added to the PATH
environment variable.
Solution 2
The .py
extension is unnecessary for running the script. You only have to make the script executable (e.g. by running chmod a+x script
) and add the shebang line (#!/usr/bin/env python
).
Solution 3
As an option you could create wrapper for your script (a .py
file):
For example, you have a script runme.py
so you can create new file runme
to wrap the script:
#!/usr/bin/env python
import runme
and then call the runme.py
functionality just by invoking runme
in the shell.
That is useful for multiplatform scripts, cause on Windows platform you can assign .py
files to be invoked just by name without extension and shebang in the header, but on the linux platform you can't and thus the wrapper comes out.
Related videos on Youtube
jmau5
Updated on September 18, 2022Comments
-
jmau5 over 1 year
I want to call a python script script.py from the terminal by simply typing script. Is this possible? If so, how?
I know I can avoid typing python script.py by adding #!/usr/bin/env python to the top of the script, but I still have to add the suffix .py in order to run the script.
-
jmau5 over 12 yearsThe file is in ~/workspace/python. I've added ~/workspace/python to my path, I ran sudo chmod a+x script.py", and I've added the shebang line (#!/usr/bin/env python) to the top of the script. I can run the script by typing *script.py, but just typing script doesn't work.
-
jmau5 over 12 yearsSee my comment on Patrick's reply.
-
Patrick over 12 yearsIn unix/linux everything is a file and responds to its file name. You can not call Script.py as script. Try renaming the file from script.py to script and it should fix your issue.
-
jmau5 over 12 yearsSorry, I misunderstood! Everything solved, thanks!