There may come a time when you've created something very exciting, and you want to share it. Usually, in order to share your Python program, the recipient is going to need to have the same version of Python installed, along with all of the modules used. Well this can be quite tedious to require. The interest in converting to .exe is fairly high for distribution, and there are a couple of options. With Python 2.7, Py2exe is a great choice. For Python 3, I have found cx_freeze to work quite nicely. Here's a tutorial covering how it works.
You'll first need to get cx_Freeze: http://cx-freeze.sourceforge.net/
Once you have cx_freeze, you're ready to get started.
First, you're going to need a python program to convert. For now, stick with standard library modules at most. Here, we'll use the urllib + re tutorial where we parsed Pythonprogramming.net:
import urllib.request import urllib.parse import re import time url = 'http://pythonprogramming.net' values = {'s' : 'basics', 'submit' : 'search'} data = urllib.parse.urlencode(values) data = data.encode('utf-8') # data should be bytes req = urllib.request.Request(url, data) resp = urllib.request.urlopen(req) respData = resp.read() paragraphs = re.findall(r'<p>(.*?)</p>',str(respData)) for eachParagraph in paragraphs: print(eachParagraph) time.sleep(15)
We've added a 15 second sleep at the end, so that we can run the executable and see the output before it closes.
I've saved this file as "reandurllib.py."
Now, we create a second file called "setup.py"
from cx_Freeze import setup, Executable setup(name = "reandurllib" , version = "0.1" , description = "" , executables = [Executable("reandurllib.py")])
So, here we're importing from cx_Freeze setup and executable, then we call the setup function, adding 4 parameters. For name, this is the name we want our executable to be. Version is just a version number to give it, description if you want, then finally what shall we convert, using the executable function and the python script's path to be converted as the parameter.
Next, we open up cmd.exe, or bash, or whatever shell we have, navigate to the directory that has the setup.py and the script to be converted, and we run:
python setup.py build
Now we're given a build directory. Within it, we find another directory, and within THAT, we find our executable! If you did everything right, it should parse the search result of basic from PythonProgramming.net, and display the text results for 15 seconds before closing. Awesome, right?
Some things wont be so simple. Converting things like Pygame and Matplotlib are very difficult and are solved in a case-by-case basis. Most things, however, are done very simply like this.