User Tools

Site Tools


python:virtual_environments

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
python:virtual_environments [2014/11/25 11:33]
kauffman created
python:virtual_environments [2016/06/30 11:56] (current)
kauffman [Other things you should know]
Line 1: Line 1:
 ====== Python Virtual Environments ====== ====== Python Virtual Environments ======
 +
 +==== What and Why ====
 +A Virtual Environment is a tool to keep the dependencies required by different projects in separate places, by creating virtual Python environments for them. It solves the “Project X depends on version 1.x but, Project Y needs 4.x” dilemma, and keeps your global site-packages directory clean and manageable. For example, you can work on a project which requires Django 1.3 while also maintaining a project which requires Django 1.0. ((http://​docs.python-guide.org/​en/​latest/​dev/​virtualenvs))
 +
 +==== Other things you should know ====
 +  - https://​github.com/​pypa/​virtualenv/​pull/​697
 +  - http://​conda.pydata.org/​docs/​intro.html
 +==== Using Virtual Environments ====
 +The python virtual environment package is installed by default on most CS machines. To make sure you can do the following:
 +<​code>​
 +user@computer:​~/​projects$ which virtualenv
 +/​usr/​bin/​virtualenv
 +</​code>​
 +
 +==== Creating a new project ====
 +<​code>​
 +user@hester:​~/​projects$ virtualenv --no-site-packages exampleproject
 +The --no-site-packages flag is deprecated; it is now the default behavior.
 +New python executable in exampleproject/​bin/​python
 +Installing
 +distribute................................................................................done.
 +Installing pip...............done.
 +</​code>​
 +<​code>​
 +user@computer:​~/​projects$ ls -l exampleproject/​
 +total 4
 +drwxrwxr-x 2 user group 4096 Nov 25 10:16 bin
 +drwxrwxr-x 2 user group   30 Nov 25 10:16 include
 +drwxrwxr-x 3 user group   30 Nov 25 10:16 lib
 +drwxrwxr-x 2 user group   56 Nov 25 10:16 local
 +</​code>​
 +<​code>​
 +user@computer:​~/​projects$ cd exampleproject/​
 +</​code>​
 +
 +==== Activate ====
 +Now you need to activate your virtual environment. This will setup some path variables to make the environments bin and lib directory to be the default.
 +<​code>​
 +user@computer:​~/​projects/​exampleproject$ source bin/​activate
 +(exampleproject)user@computer:​~/​projects/​exampleproject$ ​
 +</​code>​
 +
 +==== Installing Modules ====
 +After activating the virtual environment you will notice that your prompt changed a little. This is not the only thing that has changed. Your $PATH and default python have changed as well (just checkout the bin/​activate script to see what else it does).
 +
 +Notice that the '​bin'​ directory in your virtual environment has been prepended to $PATH and the python and pip executables are inside the bin directory.
 +<​code>​
 +(exampleproject)user@computer:​~/​projects/​exampleproject$ echo $PATH
 +/​home/​user/​projects/​exampleproject/​bin:/​usr/​local/​sbin:/​usr/​local/​bin:/​usr/​sbin:/​usr/​bin:/​sbin:/​bin:/​usr/​games
 +</​code>​
 +<​code>​
 +(exampleproject)user@computer:​~/​projects/​exampleproject$ which python
 +/​home/​user/​projects/​exampleproject/​bin/​python
 +</​code>​
 +<​code>​
 +(exampleproject)user@computer:​~/​projects/​exampleproject$ which pip
 +/​home/​user/​projects/​exampleproject/​bin/​pip
 +</​code>​
 +
 +So to actually install your own python modules you can use '​pip'​ or '​easy_install'​ to do so:
 +<​code>​
 +(exampleproject)user@computer:​~/​projects/​exampleproject$ pip install docopt
 +Downloading/​unpacking docopt
 +  Downloading docopt-0.6.2.tar.gz
 +  Running setup.py egg_info for package docopt
 +
 +Installing collected packages: docopt
 +  Running setup.py install for docopt
 +
 +Successfully installed docopt
 +Cleaning up...
 +</​code>​
 +
 +Notice where docopt was installed (~/​projects/​exampleproject/​local/​lib/​python2.7/​site-packages):​
 +<​code>​
 +(exampleproject)user@computer:​~/​projects/​exampleproject$ ls -l local/​lib/​python2.7/​site-packages/​docopt*
 +-rw------- 1 user group 19946 Mar  8 23:12 local/​lib/​python2.7/​site-packages/​docopt.py
 +-rw------- 1 user group 26140 Mar  8 23:12 local/​lib/​python2.7/​site-packages/​docopt.pyc
 +
 +local/​lib/​python2.7/​site-packages/​docopt-0.6.2-py2.7.egg-info:​
 +total 40
 +-rw------- 1 user group     1 Mar  8 23:12 dependency_links.txt
 +-rw------- 1 user group    86 Mar  8 23:12 installed-files.txt
 +-rw------- 1 user group 21525 Mar  8 23:12 PKG-INFO
 +-rw------- 1 user group   651 Mar  8 23:12 SOURCES.txt
 +-rw------- 1 user group     7 Mar  8 23:12 top_level.txt
 +</​code>​
 +
 +
 +==== Deactivate ====
 +To deactivate or stop working on your environment use the function that gets sourced when you activate your environment:​
 +<​code>​
 +(exampleproject)user@computer:​~/​projects/​exampleproject$ deactivate
 +user@computer:​~/​projects/​exampleproject$ ​
 +</​code>​
/var/lib/dokuwiki/data/attic/python/virtual_environments.1416936828.txt.gz · Last modified: 2014/11/25 11:33 by kauffman