# Working with Virtual Environments

Python has a feature called virtual environments that let you set up isolated Python environments for different projects. This allows you to install the libraries that you need for one project without messing up others.

In general, you can use one virtual environment for everything in this class. However, if you'd like to separate things out for some reason, you can use multiple environments.

## Creating Virtual Environments

Since Python 3.4, Python has included a virtual environment tool called pyvenv in the base Python distribution. This is automatically installed when you install Python on Windows or Mac, and the Linux instructions I provided will also result in installing it.

### Using PyCharm

PyCharm can directly create a virtual environment. To do this, when you are selecting or configuring your Project Interpreter, select ‘Create Virtualenv’ from the gear dropdown. It will prompt you for a base interpreter (this should be your Python 3.4 installation) and a name & location for the virtual environment.

After you complete this form, PyCharm will automatically create a virtual environment (and, if you do this while creating a Flask application, install Flask).

After creating the virtual environment, you can go to the Project Interpreter settings and install packages by clicking the ‘+’ button at the bottom of the list of packages. You can then search for and install Flask, Flask-Script, and other packages from the Python Package Index.

### Using the Command Line

Note

Some of the department computers do not have it, in which case you can use the older virtualenv tool. Just replace pyvenv or pyvenv-3.4 with virtualenv -p /usr/bin/python3.4.

To create a virtual environment, run the following command in the terminal on Unix:

\$ pyvenv /path/to/my/venv


You might need to use pyvenv-3.4 or pyvenv-3.5 instead of just pyvenv. Replace /path/to/my/venv with the path to where you want your virtual enviroment installed, such as ~/cs3320-env or C:\Users\myuser\cs3320-env.

On Windows, pyvenv is not in the path by default. It is located in C:\Python34\Tools\Scripts. We can run it with its full path as follows:

C:\Users\michael> python C:\Python34\Tools\Scripts\pyvenv.py cs3320-env


Since we are running this command in C:\Users\michael, it will create the virtual environment at C:\Users\michael\cs3320-env.

Note

Python 3.5 installs to a different location on Windows, under your user profile's AppData directory.

This will create a virtual environment at the specified location. It will also install pip, a Python package manager, into the environment, and arrange for the python executable to be the specified version of Python.

## Using the Virtual Environment in PyCharm

You can add the virtual environment just like any other Python installation in PyCharm when you configure your Project Interpreter (when you create the project, or after the fact in File -> Settings).

If your virtual environment doesn't appear in the list, click the browse button and browse to the bin/python executable (on Unix) or python.exe (on Windows) file that it contains. PyCharm will automatically scan it for packages and make it available.

## Using the Virtual Environment at the Command Prompt

If you want to use Python from the command prompt, you first need to activate the virtual environment. This needs to be done each time you open a terminal to use the environment (activation adds the virtual environment to the current terminal session).

On OS X and Linux, assuming you are using the default bash shell, you can run the following to activate:

source /path/to/venv/bin/activate


If you are using PowerShell on Windows, run:

C:\Path\to\venv\Scripts\activate.ps1


Note

If PowerShell says that the policy does not allow the script to be run, change the execution policy to RemoteSigned by running the following:

Set-ExecutionPolicy RemoteSigned -Scope CurrentUser


In the legacy command prompt, you can use the activate.bat file and it will function just like activate.ps1.

Once you have activated the virtual environment, your python and pip commands will run the isolated Python.

## Installing Packages

Python libraries, such as Flask, can be installed with the pip tool. All the libraries we use are Pip-installable.

To install the basic libraries we need for all of our projects, run the following in a terminal where you have activated your virtual environment:

pip install Flask Flask-Script


Flask is the main Flask toolkit, and Flask-Script is the library that makes our manage.py files work (see Assignment 0).

You can also install packages from within PyCharm. Go to the ‘Project Interpeter’ settings, and click the ‘+’ button at the bottom of the package list.