How to deploy a simple Python app using nothing but Github and Heroku

This is a step-by-step guide to deploying your first Python app. It’s intended for a complete beginner.

Start out on github — a development platform for sharing and developing code. After signing up for a free github account, fork my repo — it will have all the files you need to get started. It’s easy: at the top right, click on the fork button (note that in the screenshot it’s greyed out for me because I can’t fork my own repo):

Image for post
Image for post

After a brief wait, you should now see the same repo but under your own name, not mine. While github makes sure to provide a reference to the source author of forked code, this is now yours to play with and develop as you please!

We’ll come back to github in a moment. First let’s go to Heroku, a free platform for deploying code. After signing up for an account, create your first app like this:

Image for post
Image for post

Give it a memorable name and create:

Image for post
Image for post

Select github as your deployment method, and then search for your repo (note that it will appear under your name, not mine, since you already forked it!). Go ahead and pick “connect”.

Image for post
Image for post

Heroku will offer you the option to enable automatic deploys, but just skip that for now and select manual deploy, “deploy branch”.

Image for post
Image for post

Heroku will display a status window showing the steps in the deployment process. This will take a couple of minutes.

Image for post
Image for post

When it’s finished, Heroku will give you the option to view your app.

Image for post
Image for post

Your app should now be running smoothly on Heroku’s web service:

Image for post
Image for post

Now to modify the appearance of the app, go to github and click onapp.py as follows:

Image for post
Image for post

You’ll notice there’s a small pencil icon at the right hand side, which will allow you to edit the file.

Image for post
Image for post

Let’s take a look:

Image for post
Image for post

As we can see from the import statements, we’re using a Python library called Dash by Plot.ly. Other popular libraries for deploying Python apps are Flask and Bokeh. Most of the code in this file you’ll want to leave untouched until you become more familiar with Dash, but lines 7–19 should be pretty safe for you to tinker with. This is where we’re defining the data (bitterness and alcohol for four beers from Flying Dog Brewery). For example, we have a Python variable named beer whose value is a list — which is why the values are written inside square brackets. Below that, inside bitterness (which is known in Python as an instance of a Class object) we see four more Python variables: x, y, name, and marker. (Note: the screenshots below probably have a different color scheme from what you’re seeing on Github, but the code is the same).

Image for post
Image for post

The first three are lists, like beer. The last one, marker, is a dictionary — which is why its values are inside curly brackets.

Try changing the color from lightblueto darkgreen. Try replacing one of the beers, too — for example, you might replace the Chesapeake stout with blood orange ale, which has an ABV of 7.0 and an IBU of 40. Save the app.py file when you’re done. Make sure that you update the y values in both the bitterness and the alcohol class objects.

Image for post
Image for post

When you’re finished editing, write a short message to yourself (describing what you did) and commit your changes.

Image for post
Image for post

Back on the main page of the repo, you should now see your commit message appearing by the name of the app.py file:

Image for post
Image for post

Return to Heroku, click on your app, and select “deploy”:

Image for post
Image for post

Scroll to the bottom of the page, and under “Manual Deploy”, select “Deploy branch”:

Image for post
Image for post

Wait for a minute, and then select “View”. Your updates should now be visible on your app. You can view mine here. Congratulations! You’ve just built and updated your first Python app.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store