Python is a versatile programming language that can be used for many different programming projects. First published in 1991 with a name inspired by the British comedy group Monty Python, the development team wanted to make Python a language that was fun to use. Easy to set up, and written in a relatively straightforward style with immediate feedback on errors, Python is a great choice for beginners and experienced developers alike. Python 3 is the most current version of the language and is considered to be the future of Python.
This tutorial will guide you through installing Python 3 on your local macOS machine and setting up a programming environment via the command line.
You will need a macOS computer with administrative access that is connected to the internet.
We’ll be completing most of our installation and set up on the command line, which is a non-graphical way to interact with your computer. That is, instead of clicking on buttons, you’ll be typing in text and receiving feedback from your computer through text as well. The command line, also known as a shell, can help you modify and automate many of the tasks you do on a computer every day, and is an essential tool for software developers.
The macOS Terminal is an application you can use to access the command line interface. Like any other application, you can find it by going into Finder, navigating to the Applications folder, and then into the Utilities folder. From here, double-click the Terminal like any other application to open it up. Alternatively, you can use Spotlight by holding down the command
and spacebar
keys to find Terminal by typing it out in the box that appears.
There are many more Terminal commands to learn that can enable you to do more powerful things. The article “[An Introduction to the Linux Terminal] (https://www.digitalocean.com/community/tutorials/an-introduction-to-the-linux-terminal)” can get you better oriented with the Linux Terminal, which is similar to the macOS Terminal.
Xcode is an integrated development environment (IDE) that is comprised of software development tools for macOS. You may have Xcode installed already. To check, in your Terminal window, type:
- xcode-select -p
If you receive the following output, then Xcode is installed:
Output/Library/Developer/CommandLineTools
If you received an error, then in your web browser install [Xcode from the App Store] (https://itunes.apple.com/us/app/xcode/id497799835?mt=12&ign-mpt=uo%3D2) and accept the default options.
Once Xcode is installed, return to your Terminal window. Next, you’ll need to install Xcode’s separate Command Line Tools app, which you can do by typing:
- xcode-select --install
At this point, Xcode and its Command Line Tools app are fully installed, and we are ready to install the package manager Homebrew.
While the OS X Terminal has a lot of the functionality of Linux Terminals and other Unix systems, it does not ship with a good package manager. A package manager is a collection of software tools that work to automate installation processes that include initial software installation, upgrading and configuring of software, and removing software as needed. They keep installations in a central location and can maintain all software packages on the system in formats that are commonly used. Homebrew provides OS X with a free and open source software package managing system that simplifies the installation of software on OS X.
To install Homebrew, type this into your Terminal window:
- /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
Homebrew is made with Ruby, so it will be modifying your computer’s Ruby path. The curl
command pulls a script from the specified URL. This script will explain what it will do and then pauses the process to prompt you to confirm. This provides you with a lot of feedback on what the script is going to be doing to your system and gives you the opportunity to verify the process.
If you need to enter your password note that your keystrokes will not display in the Terminal window but they will be recorded, simply press the return
key once you’ve entered your password. Otherwise press the letter y
for “yes” whenever you are prompted to confirm the installation.
Let’s walk through the flags that are associated with the curl
command:
f
or --fail
flag tells the Terminal window to give no HTML document output on server errors.-s
or --silent
flag mutes curl
so that it does not show the progress meter, and combined with the -S
or --show-error
flag it will ensure that curl
shows an error message if it fails.-L
or --location
flag will tell curl
to redo the request to a new place if the server reports that the requested page has moved to a different location.Once the installation process is complete, we’ll put the Homebrew directory at the top of the PATH
environment variable. This will ensure that Homebrew installations will be called over the tools that Mac OS X may select automatically that could run counter to the development environment we’re creating.
You should create or open the ~/.bash_profile
file with the command-line text editor nano using the nano
command:
- nano ~/.bash_profile
Once the file opens up in the Terminal window, write the following:
export PATH=/usr/local/bin:$PATH
To save your changes, hold down the control
key and the letter o
, and when prompted press the return
key. Now you can exit nano by holding the control
key and the letter x
.
For these changes to activate, in the Terminal window, type:
- source ~/.bash_profile
Once you have done this, the changes you have made to the PATH
environment variable will be effective.
We can make sure that Homebrew was successfully installed by typing:
- brew doctor
If no updates are required at this time, the Terminal output will read:
OutputYour system is ready to brew.
Otherwise, you may get a warning to run another command such as brew update
to ensure that your installation of Homebrew is up to date.
Once Homebrew is ready, you can install Python 3.
You can use Homebrew to search for everything you can install with the brew search
command, but to provide us with a shorter list, let’s instead search for just the available Python-related packages or modules:
- brew search python
The Terminal will output a list of what you can install, like this:
Outputapp-engine-python micropython python3
boost-python python wxpython
gst-python python-markdown zpython
homebrew/apache/mod_python homebrew/versions/gst-python010
homebrew/python/python-dbus Caskroom/cask/kk7ds-python-runtime
homebrew/python/vpython Caskroom/cask/mysql-connector-python
Python 3 will be among the items on the list. Let’s go ahead and install it:
- brew install python3
The Terminal window will give you feedback regarding the installation process of Python 3, it may take a few minutes before installation is complete.
Along with Python 3, Homebrew will install pip, setuptools and wheel.
A tool for use with Python, we will use pip to install and manage programming packages we may want to use in our development projects. You can install Python packages by typing:
- pip3 install package_name
Here, package_name
can refer to any Python package or library, such as Django for web development or NumPy for scientific computing. So if you would like to install NumPy, you can do so with the command pip3 install numpy
.
setuptools facilitates packaging Python projects, and wheel is a built-package format for Python that can speed up your software production by reducing the number of times you need to compile.
To check the version of Python 3 that you installed, you can type:
- python3 --version
This will output the specific version of Python that is currently installed, which will by default be the most up-to-date stable version of Python 3 that is available.
To update your version of Python 3, you can first update Homebrew and then update Python:
- brew update
- brew upgrade python3
It is good practice to ensure that your version of Python is up-to-date.
Now that we have Xcode, Homebrew, and Python installed, we can go on to create our programming environment.
Virtual environments enable you to have an isolated space on your computer for Python projects, ensuring that each of your projects can have its own set of dependencies that won’t disrupt any of your other projects.
Setting up a programming environment provides us with greater control over our Python projects and over how different versions of packages are handled. This is especially important when working with third-party packages.
You can set up as many Python programming environments as you would like. Each environment is basically a directory or folder in your computer that has a few scripts in it to make it act as an environment.
Choose which directory you would like to put your Python programming environments in, or create a new directory with mkdir
, as in:
- mkdir Environments
- cd Environments
Once you are in the directory where you would like the environments to live, you can create an environment by running the following command:
- python3.7 -m venv my_env
Essentially, this command creates a new directory (in this case called my_env) that contains a few items:
pyvenv.cfg
file points to the Python installation that you used to run the command.lib
subdirectory contains a copy of the Python version and has a site-packages
subdirectory inside it that starts out empty but will eventually hold the relevant third-party modules that you install.include
subdirectory compiles packages.bin
subdirectory has a copy of the Python binary along with the activate shell script that is used to set up the environment.Together, these files work to make sure that your projects are isolated from the broader context of your local machine, so that system files and project files don’t mix. This is good practice for version control and to ensure that each of your projects has access to the particular packages that it needs.
To use this environment, you need to activate it, which you can do by typing the following command that calls the activate script:
- source my_env/bin/activate
Your prompt will now be prefixed with the name of your environment, in this case it is called my_env:
-
This prefix lets us know that the environment my_env is currently active, meaning that when we create programs here they will use only this particular environment’s settings and packages.
Note: Within the virtual environment, you can use the command python
instead of python3
, and pip
instead of pip3
if you would prefer. If you use Python 3 on your machine outside of an environment, you’ll need to use the python3
and pip3
commands exclusively, as python
and pip
will call an earlier version of Python.
After following these steps, your virtual environment is ready to use.
Now that we have our virtual environment set up, let’s create a traditional “Hello, World!” program. This will make sure that our environment is working and gives us the opportunity to become more familiar with Python if we aren’t already.
To do this, we’ll open up a command-line text editor such as nano and create a new file:
- nano hello.py
Once the text file opens up in Terminal we’ll type out our program:
print("Hello, World!")
Exit nano by typing the control
and x
keys, and when prompted to save the file press y
.
Once you exit out of nano and return to your shell, let’s run the program:
- python hello.py
The hello.py program that you just created should cause Terminal to produce the following output:
OutputHello, World!
To leave the environment, simply type the command deactivate
and you’ll return to your original directory.
Congratulations! At this point you have a Python 3 programming environment set up on your local Mac OS X machine and can begin a coding project!
To set up Python 3 on another computer, follow the local programming environment guides for Ubuntu 16.04, Debian 8, CentOS 7, or Windows 10. You can also read about installing Python and setting up a programming environment on an Ubuntu 16.04 server, which is especially useful when working on development teams.
With your local machine ready for software development, you can continue to learn more about coding in Python by following “Understanding Data Types in Python 3” and “How To Use Variables in Python 3”.
Thanks for learning with the DigitalOcean Community. Check out our offerings for compute, storage, networking, and managed databases.
This textbox defaults to using Markdown to format your answer.
You can type !ref in this text area to quickly search our full set of tutorials, documentation & marketplace offerings and insert the link!
Thank you Lisa. Your article helped answer so many questions I had for some time now. I appreciate the time you took to deliver a tutorial on how to set up a Python environment on macOS.
Thank you for this. Nice and clean. Would you be able to point me to other tutorials which would talk about the order to install Miniconda, Jupyter, and other machine learning related tools? The order and general organization and aliasing for 2.7 and 3 would be appreciated.
thanks for the tutorial. how would i run python3 via a web page locally on my computer? i have it working with the shebang line #!/usr/bin/python but if i try to change it to #!/usr/bin/python3 i get an internal server error. is there a way of running a form that calls a python3 script in my_env? i need to have it import some python modules too. thanks.
It is not compatible with
fish
or other type of shell. If you is underfish
, use:Hi Lisa - thanks for penning this clean documentation.
I ran into one issue though. When i install “brew install python3” - for some reason I am getting python 3.5.2 instead of 3.6.3.
See https://stackoverflow.com/questions/44232913/why-cant-i-install-python-3-6-with-homebrew
Any suggestions?