How to execute python file in linux - python

I am using linux mint, and to run a python file I have to type in the terminal: python [file path], so is there way to make the file executable, and make it run the python command automatically when I doublr click it?
And since I stopped dealing with windows ages ago, I wonder if the .py files there are also automatically executable or do I need some steps.
Thanks

You have to add a shebang. A shebang is the first line of the file. Its what the system is looking for in order to execute a file.
It should look like that :
#!/usr/bin/env python
or the real path
#!/usr/bin/python
You should also check the file have the right to be execute. chmod +x file.py
As Fabian said, take a look to Wikipedia : Wikipedia - Shebang (en)

I suggest that you add
#!/usr/bin/env python
instead of #!/usr/bin/python at the top of the file. The reason for this is that the python installation may be in different folders in different distros or different computers. By using env you make sure that the system finds python and delegates the script's execution to it.
As said before to make the script executable, something like:
chmod u+x name_of_script.py
should do.

yes there is. add
#!/usr/bin/env python
to the beginning of the file and do
chmod u+rx <file>
assuming your user owns the file, otherwise maybe adjust the group or world permissions.
.py files under windows are associated with python as the program to run when opening them just like MS word is run when opening a .docx for example.

1.save your file name as hey.py with the below given hello world script
#! /usr/bin/python
print('Hello, world!')
2.open the terminal in that directory
$ python hey.py
or if you are using python3 then
$ python3 hey.py

Add to top of the code,
#!/usr/bin/python
Then, run the following command on the terminal,
chmod +x yourScriptFile

Add this at the top of your file:
#!/usr/bin/python
This is a shebang. You can read more about it on Wikipedia.
After that, you must make the file executable via
chmod +x your_script.py

If you have python 3 installed then add this line to the top of the file:
#!/usr/bin/env python3
You should also check the file have the right to be execute. chmod +x file.py
For more details, follow the official forum:
https://askubuntu.com/questions/761365/how-to-run-a-python-program-directly

Related

Python files on Mac

I downloaded a python file and edited in BBedit. Now that I'm trying to access it from terminal, it does not appear as an executable file (green). It's white instead. And when I run a tool that makes use of it, it says that the python executable cannot be found. What should I do? Thanks
Make sure the first line is a valid shebang, e.g.
#!/usr/bin/env python3
Then make the script executable with:
chmod +x YourScript.py
Then run it with:
./YourScript.py
or put it anywhere on your PATH and run it with:
YourScript.py

Avoid typing "python" in a terminal to open a .py script?

Whilst running python scripts from my linux terminal, I find myself typing in python myfile.py way too much. Is there a way on linux (or windows) to execute a python script by just entering in the name of the script, as is possible with bash/sh? like ./script.py?
At the top of the script, put
#!/usr/bin/python
or whatever the path to Python is on your computer (the result of which python on Linux). This tells the system to run your script using python. You'll also need to do chmod +x script.py for it to work.
Or if you're really lazy, use alias p=python or something.
you will need to chmod 0755 script.py and as a first line in script have something like
#!/usr/bin/python
The first line of your Python script should be:
#!/usr/bin/env python
or
#!/usr/bin/env python3
Depending on your version, and if Python 3 is your default or not.
Then, set executable bits at the shell (maybe with sudo if needed):
chmod +x my_script_name.py
Note that with the above done, you could rename your Python script
mv my_script_name.py my_script_name
and then execute your Python script just by:
my_script_name
at the shell line.

python how to run python without specifying the interpreter

when you run a python script, you have to do
python3 filename
Is there something you can write in the python file to make it so that you dont have to say python3 before running it. I tried the #!/ line, but when I do:
./filename
it says permission denied. Is specifying the interpreter name when running the program mandatory?
At the top of your python file, you'll want to add the path to the Python3 binary. This is commonly referred to as a "hashbang" or "shebang". It tells your shell how to interpret or run your file (without it, if you tried ./<python-file>, it would try to interpret it as bash.
#!/path/to/python3
On my computer, it's
#!/usr/bin/python3
To determine the path where your python3 binary (or link) is located, run
$ which python3
Alternatively, it's better to use env, as it will ensure the interpreter used is the first one on your environment's $PATH.
#!/usr/bin/env python3
Note, you'll need to run
$ chmod a+x <python-file>
to change the mode to make it executable. The a tells it to make it executable for all (user, group, and others), so if you do not want this, you can leave it out (as in, chmod +x <python-file>).
To not have to run ./ before the executable, you'll want to set your PATH as
export PATH=$PATH:.
in your .bashrc or similar *rc file for your shell. (export makes the variable available to sub-processes.) Then you'll want to run
$ source ~/.bashrc
I'm guessing you are on a linux or unix bases operating system. Yes there is something you can do. Hopefully you are using the import os and import sys library for any interaction with terminal. Next you have to do a chmod command on the file to make it executable
The command would be
chmod +x [python_file.py]
or usually (if not root)
sudo chmod +x [python_file.py]

Can't run Python .py files from terminal on Mac

I just downloaded Python 3.2 to Mac OS 10.6 environment. I'm new to programming and am trying to run my first stand-alone .py file, but I keep getting an error message saying "no such directory or file." The name of the file is "script1.py" and I saved it to /Users/billp/Documents. When I open the Terminal to run the file I type:
python script1.py
I've also tried adding this line to the beginning of the script:
#!/usr/local/bin/python
As well as this one:
#!/usr/bin/env python
Yet, I keep getting the same error message. Any help would be greatly appreciated.
Make sure you are in the right working directory after opening terminal. Type
cd /Users/billp/Documents/
(use tab to autocomplete)
then
python ./script1.py
This way you are launching python executable and passing it path to your file as the first argument. The shebang #! line you mentioned allows you to launch your script directly, like this: ./script1.py, but you need to mark the file as executable chmod +x script1.py and provide path to interpreter (python) after the shebang. #!/usr/bin/env python references your default python installation.
The ./ stands for current directory. By default when you type script1.py your shell (which is the thing that you type commands into, through the terminal) would look for executable file in special folders listed in PATH env variable. script1.py is not usually there, so you would see -bash: script1.py: command not found. python, on the other hand is on the PATH so it should work.
Maybe you forgot to make the file executable? Try this at the command prompt:
$ chmod +x script1.py
I prefer to start my Python scripts in a Mac with these lines (assuming of course that you're saving the file in UTF-8 encoding:
#!/usr/bin/env python
#coding=utf-8
Also, make sure that the pythoncommand is available in the path. If everything is set up correctly, it won't be necessary to type python first, and you can run the script directly by typing ./script1.py in the directory where it is located.
One final thing, for running a piece of code when executing the script from the command line (as opposed to simply loading the definitions in the file), write this at the end:
if __name__ == '__main__':
# the code you want to call
Are your python binaries here?
/Library/Frameworks/Python.framework/Versions/3.2/bin/python
It's worth pointing out, as long as the file is in your current directory it's automatically available. Otherwise, anything files will have to be referenced absolutely using the full path information.
So the following examples are calling the same file:
Explicit (absolute path)
python /Users/billp/Documents/script1.py
python /Users/billp/Documents/script2.py
python /Users/billp/Documents/script3.py
Implicit (relative path)
cd /Users/billp/Documents
python script1.py
python script2.py
python script3.py
As long as you're working with files in the same directory (commonly known as your working directory), you may always safely use relative paths. If the files are anywhere else, you must always specify an absolute path.

Python path help

how can i run my program using test files on my desktop without typing in the specific pathname. I just want to be able to type the file name and continue on with my program. Since i want to be able to send it to a friend and not needing for him to change the path rather just read the exact same file that he has on his desktop.
f = open(os.path.join(os.environ['USERPROFILE'], 'DESKTOP', my_filename))
If you are on Unix/Mac you can add a shebang at the top of your script and set it as executable. Usually you'd do:
#!/usr/bin/env python
And then to make it executable, from a terminal use chmod:
chmod +x script.py
Now you can run the script (if you are in the same directory) like:
./script.py
If you are on Windows you'll want to add the Python executable to your %PATH% enviromental variable, then you can run your script with python script.py. They talk about this in more depth in the Python documentation: http://docs.python.org/using/windows.html
If you place your Python script in the same directory as the files your script is going to open, then you don't need to specify any paths. Be sure to allow the Python installer to "Register Extensions", so Python is called when you double-click on a Python script.
You can tell your friend to make *.py files to be executed by the interpreter. Change it from Explorer:Tools:Folder Options:File Types.

Categories

Resources