Python Virtual Environment Setup on Mac OSX — Easiest Way
Python virtual environments are essential tools for managing project dependencies and ensuring a clean, isolated development environment. Setting up a virtual environment on macOS can seem like a daunting task, but fear not! In this article, we will guide you through the easiest way to set up a Python virtual environment on your Mac.
Whether you’re a seasoned developer or just starting your coding journey, understanding virtual environments is crucial. They allow you to create a self-contained space for each project, where you can install specific versions of Python packages without worrying about conflicts with your system-wide installations.
By the end of this article, you will have a solid understanding of how to set up a Python virtual environment on your Mac and get started on your coding endeavors hassle-free. Let’s dive in!
If you are a Mac user, you should know that Python 2.7.x comes pre-installed in your Macbook, but as that is required by your operating system, you cannot modify it or update it and I would recommend that you don’t use it at all.
Instead, you should set up a virtual environment for your development purpose. You must be thinking about why we need a virtual environment. So here are a few points in its favor:
- When we have a virtual environment, then we can install new packages inside the virtual environment which will not affect the operating system’s python modules.
- We can have different versions of Python installed inside the virtual environment.
- You can set up a different virtual environment for each project for example if you are working on one project based on Tkinter module, or some other projects based on the Numpy module, then you can easily do this.
So to set up a virtual environment, we won’t be using virtualenv or virtualenvwrapper module, which are the most popular to set up a virtual environment.
But we will be using the venv module which comes as a default with Python 3.x version and is recommended to use for virtual environment creation.
Installing Python 3.8 on Mac OSX
We will use Homebrew to install Python 3.8 and will then move on to creating a virtual environment. If you don’t have Homebrew installed on your Macbook, you can install Homebrew on your MacOSX and then use it to install Python 3.8 on your machine.
Once you have Homebrew set up, run the following command to install the latest version of Python:
Homebrew will also install pip for you which you can verify by running the pip3 command.
To verify the successful installation of the Python 3.x version, run the python3 command, and the IDLE should start in your terminal.
Use venv to create a Virtual Environment
As per the official documentation of venv module,
The venv module provides support for creating lightweight “virtual environments” with their own site directories, optionally isolated from system site directories. Each virtual environment has its own Python binary (which matches the version of the binary that was used to create this environment) and can have its own independent set of installed Python packages in its site directories.
We can run the following command to create a virtual environment:
This will create a virtual environment for you with the following files in the virtual environment directory my_env:
To activate the virtual environment, run the following command:
This will start the virtual environment and you should see the name of the virtual environment added before the directory name as shown in the image below:
Now you can install anything in it, by running the pip3 install command, for example to install the requests module, run the following command:
To get out of the virtual environment, run the exit command.
Conclusion
Setting up a Python virtual environment on your Mac doesn’t have to be a complicated process. By following the steps outlined in this article, you can quickly create an isolated environment for your Python projects. Virtual environments provide a clean slate where you can install project-specific dependencies, avoiding conflicts and ensuring smooth development.
Remember, virtual environments are invaluable tools for any Python developer, enabling efficient project management and easy collaboration. By harnessing the power of virtual environments, you can streamline your development workflow and keep your projects organized.
So go ahead, give it a try! Create your first Python virtual environment on your Mac and experience the benefits firsthand. Happy coding!
Frequnetly Asked Questions(FAQs)
1. What is a Python virtual environment?
A Python virtual environment is a self-contained directory that houses a Python installation along with the packages required for a specific project. It helps keep project dependencies isolated and prevents conflicts with system-wide Python installations.
2. How do I create a virtual environment in Python?
You can create a virtual environment in Python using the built-in «venv» module. Simply open your terminal, navigate to the desired directory, and run the command: «python3 -m venv myenv». Replace «myenv» with the name you want for your virtual environment.
3. How do I activate a virtual environment?
To activate a virtual environment, navigate to its directory in the terminal and run the command: «source bin/activate». Once activated, you’ll notice your command prompt changes to reflect the activated environment.
You may also like:
12. Virtual Environments and Packages¶
Python applications will often use packages and modules that don’t come as part of the standard library. Applications will sometimes need a specific version of a library, because the application may require that a particular bug has been fixed or the application may be written using an obsolete version of the library’s interface.
This means it may not be possible for one Python installation to meet the requirements of every application. If application A needs version 1.0 of a particular module but application B needs version 2.0, then the requirements are in conflict and installing either version 1.0 or 2.0 will leave one application unable to run.
The solution for this problem is to create a virtual environment , a self-contained directory tree that contains a Python installation for a particular version of Python, plus a number of additional packages.
Different applications can then use different virtual environments. To resolve the earlier example of conflicting requirements, application A can have its own virtual environment with version 1.0 installed while application B has another virtual environment with version 2.0. If application B requires a library be upgraded to version 3.0, this will not affect application A’s environment.
12.2. Creating Virtual Environments¶
The module used to create and manage virtual environments is called venv . venv will usually install the most recent version of Python that you have available. If you have multiple versions of Python on your system, you can select a specific Python version by running python3 or whichever version you want.
To create a virtual environment, decide upon a directory where you want to place it, and run the venv module as a script with the directory path:
python -m venv tutorial-env
This will create the tutorial-env directory if it doesn’t exist, and also create directories inside it containing a copy of the Python interpreter and various supporting files.
A common directory location for a virtual environment is .venv . This name keeps the directory typically hidden in your shell and thus out of the way while giving it a name that explains why the directory exists. It also prevents clashing with .env environment variable definition files that some tooling supports.
Once you’ve created a virtual environment, you may activate it.
tutorial-env\Scripts\activate.bat
source tutorial-env/bin/activate
(This script is written for the bash shell. If you use the csh or fish shells, there are alternate activate.csh and activate.fish scripts you should use instead.)
Activating the virtual environment will change your shell’s prompt to show what virtual environment you’re using, and modify the environment so that running python will get you that particular version and installation of Python. For example:
$ source ~/envs/tutorial-env/bin/activate (tutorial-env) $ python Python 3.5.1 (default, May 6 2016, 10:59:36) . >>> import sys >>> sys.path ['', '/usr/local/lib/python35.zip', . '~/envs/tutorial-env/lib/python3.5/site-packages'] >>>
To deactivate a virtual environment, type:
12.3. Managing Packages with pip¶
You can install, upgrade, and remove packages using a program called pip. By default pip will install packages from the Python Package Index. You can browse the Python Package Index by going to it in your web browser.
pip has a number of subcommands: “install”, “uninstall”, “freeze”, etc. (Consult the Installing Python Modules guide for complete documentation for pip .)
You can install the latest version of a package by specifying a package’s name:
(tutorial-env) $ python -m pip install novas Collecting novas Downloading novas-3.1.1.3.tar.gz (136kB) Installing collected packages: novas Running setup.py install for novas Successfully installed novas-3.1.1.3
You can also install a specific version of a package by giving the package name followed by == and the version number:
(tutorial-env) $ python -m pip install requests==2.6.0 Collecting requests==2.6.0 Using cached requests-2.6.0-py2.py3-none-any.whl Installing collected packages: requests Successfully installed requests-2.6.0
If you re-run this command, pip will notice that the requested version is already installed and do nothing. You can supply a different version number to get that version, or you can run python -m pip install —upgrade to upgrade the package to the latest version:
(tutorial-env) $ python -m pip install --upgrade requests Collecting requests Installing collected packages: requests Found existing installation: requests 2.6.0 Uninstalling requests-2.6.0: Successfully uninstalled requests-2.6.0 Successfully installed requests-2.7.0
python -m pip uninstall followed by one or more package names will remove the packages from the virtual environment.
python -m pip show will display information about a particular package:
(tutorial-env) $ python -m pip show requests --- Metadata-Version: 2.0 Name: requests Version: 2.7.0 Summary: Python HTTP for Humans. Home-page: http://python-requests.org Author: Kenneth Reitz Author-email: me@kennethreitz.com License: Apache 2.0 Location: /Users/akuchling/envs/tutorial-env/lib/python3.4/site-packages Requires:
python -m pip list will display all of the packages installed in the virtual environment:
(tutorial-env) $ python -m pip list novas (3.1.1.3) numpy (1.9.2) pip (7.0.3) requests (2.7.0) setuptools (16.0)
python -m pip freeze will produce a similar list of the installed packages, but the output uses the format that python -m pip install expects. A common convention is to put this list in a requirements.txt file:
(tutorial-env) $ python -m pip freeze > requirements.txt (tutorial-env) $ cat requirements.txt novas==3.1.1.3 numpy==1.9.2 requests==2.7.0
The requirements.txt can then be committed to version control and shipped as part of an application. Users can then install all the necessary packages with install -r :
(tutorial-env) $ python -m pip install -r requirements.txt Collecting novas==3.1.1.3 (from -r requirements.txt (line 1)) . Collecting numpy==1.9.2 (from -r requirements.txt (line 2)) . Collecting requests==2.7.0 (from -r requirements.txt (line 3)) . Installing collected packages: novas, numpy, requests Running setup.py install for novas Successfully installed novas-3.1.1.3 numpy-1.9.2 requests-2.7.0
pip has many more options. Consult the Installing Python Modules guide for complete documentation for pip . When you’ve written a package and want to make it available on the Python Package Index, consult the Distributing Python Modules guide.