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] – created kauffmanpython:virtual_environments [2016/06/30 11:56] (current) – [Other things you should know] kauffman
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/pages/python/virtual_environments.txt · Last modified: 2016/06/30 11:56 by kauffman

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki