When writing a Python application, you will likely pull in a number of third party libraries, typically installed by a package manager such as
conda. The application will typically depend on a specific version of each library (or a narrow range of versions). This can cause conflicts if other Python applications on your computer require different versions of the same package.
The solution to this problem is to create a separate installation space for all of the libraries, specific to the application that uses them. This is called a virtual environment.
Python has a few popular frameworks for creating virtual environments.
Started at Python 3, virtualenv is installed as
venv with your Python installation. For Python 2.x users, you can install virtualenv with:
$ pip install virtualenv # Python 2.x users only
env will be the name of the virtual environment.
python -m venv env
This will create a directory called
env in your current working directory.
To activate (on UNIX or macOS):
$ source env/bin/activate
To save all the libraries to a
requirements.txt (Linux or Windows
pip freeze > requirements.txt
Be careful if running the above command in PowerShell on Windows! By default, PowerShell will probably not use
UTF-8 encoding but a non-standard
UTF-16 LE. To prevent this, use the following command instead:
pip freeze | Out-File -Encoding UTF8 requirements.txt
pipenv is a third-party Python virtual environment framework alternative to the built-in
$ pip install --user pipenv