Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(792)

Side by Side Diff: bootstrap/virtualenv/docs/index.rst

Issue 1407953011: Re-land: Removed virtualenv from depot_tools (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/tools/depot_tools
Patch Set: Re-added files that were present before virtualenv Created 5 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « bootstrap/virtualenv/docs/development.rst ('k') | bootstrap/virtualenv/docs/installation.rst » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 Virtualenv
2 ==========
3
4 `Mailing list <http://groups.google.com/group/python-virtualenv>`_ |
5 `Issues <https://github.com/pypa/virtualenv/issues>`_ |
6 `Github <https://github.com/pypa/virtualenv>`_ |
7 `PyPI <https://pypi.python.org/pypi/virtualenv/>`_ |
8 User IRC: #pypa
9 Dev IRC: #pypa-dev
10
11 Introduction
12 ------------
13
14 ``virtualenv`` is a tool to create isolated Python environments.
15
16 The basic problem being addressed is one of dependencies and versions,
17 and indirectly permissions. Imagine you have an application that
18 needs version 1 of LibFoo, but another application requires version
19 2. How can you use both these applications? If you install
20 everything into ``/usr/lib/python2.7/site-packages`` (or whatever your
21 platform's standard location is), it's easy to end up in a situation
22 where you unintentionally upgrade an application that shouldn't be
23 upgraded.
24
25 Or more generally, what if you want to install an application *and
26 leave it be*? If an application works, any change in its libraries or
27 the versions of those libraries can break the application.
28
29 Also, what if you can't install packages into the global
30 ``site-packages`` directory? For instance, on a shared host.
31
32 In all these cases, ``virtualenv`` can help you. It creates an
33 environment that has its own installation directories, that doesn't
34 share libraries with other virtualenv environments (and optionally
35 doesn't access the globally installed libraries either).
36
37 .. comment: split here
38
39 .. toctree::
40 :maxdepth: 2
41
42 installation
43 userguide
44 reference
45 development
46 changes
47
48 .. warning::
49
50 Python bugfix releases 2.6.8, 2.7.3, 3.1.5 and 3.2.3 include a change that
51 will cause "import random" to fail with "cannot import name urandom" on any
52 virtualenv created on a Unix host with an earlier release of Python
53 2.6/2.7/3.1/3.2, if the underlying system Python is upgraded. This is due to
54 the fact that a virtualenv uses the system Python's standard library but
55 contains its own copy of the Python interpreter, so an upgrade to the system
56 Python results in a mismatch between the version of the Python interpreter
57 and the version of the standard library. It can be fixed by removing
58 ``$ENV/bin/python`` and re-running virtualenv on the same target directory
59 with the upgraded Python.
60
61 Other Documentation and Links
62 -----------------------------
63
64 * `Blog announcement of virtualenv`__.
65
66 .. __: http://blog.ianbicking.org/2007/10/10/workingenv-is-dead-long-live-virt ualenv/
67
68 * James Gardner has written a tutorial on using `virtualenv with
69 Pylons
70 <http://wiki.pylonshq.com/display/pylonscookbook/Using+a+Virtualenv+Sandbox>`_ .
71
72 * Chris Perkins created a `showmedo video including virtualenv
73 <http://showmedo.com/videos/video?name=2910000&fromSeriesID=291>`_.
74
75 * Doug Hellmann's `virtualenvwrapper`_ is a useful set of scripts to make
76 your workflow with many virtualenvs even easier. `His initial blog post on it` __.
77 He also wrote `an example of using virtualenv to try IPython`__.
78
79 .. _virtualenvwrapper: https://pypi.python.org/pypi/virtualenvwrapper/
80 .. __: http://www.doughellmann.com/articles/CompletelyDifferent-2008-05-virtua lenvwrapper/index.html
81 .. __: http://www.doughellmann.com/articles/CompletelyDifferent-2008-02-ipytho n-and-virtualenv/index.html
82
83 * `Pew`_ is another wrapper for virtualenv that makes use of a different
84 activation technique.
85
86 .. _Pew: https://pypi.python.org/pypi/pew/
87
88 * `Using virtualenv with mod_wsgi
89 <http://code.google.com/p/modwsgi/wiki/VirtualEnvironments>`_.
90
91 * `virtualenv commands
92 <https://github.com/thisismedium/virtualenv-commands>`_ for some more
93 workflow-related tools around virtualenv.
94
95 * PyCon US 2011 talk: `Reverse-engineering Ian Bicking's brain: inside pip and v irtualenv
96 <http://pyvideo.org/video/568/reverse-engineering-ian-bicking--39-s-brain--ins i>`_.
97 By the end of the talk, you'll have a good idea exactly how pip
98 and virtualenv do their magic, and where to go looking in the source
99 for particular behaviors or bug fixes.
100
101 Compare & Contrast with Alternatives
102 ------------------------------------
103
104 There are several alternatives that create isolated environments:
105
106 * ``workingenv`` (which I do not suggest you use anymore) is the
107 predecessor to this library. It used the main Python interpreter,
108 but relied on setting ``$PYTHONPATH`` to activate the environment.
109 This causes problems when running Python scripts that aren't part of
110 the environment (e.g., a globally installed ``hg`` or ``bzr``). It
111 also conflicted a lot with Setuptools.
112
113 * `virtual-python
114 <http://peak.telecommunity.com/DevCenter/EasyInstall#creating-a-virtual-python >`_
115 is also a predecessor to this library. It uses only symlinks, so it
116 couldn't work on Windows. It also symlinks over the *entire*
117 standard library and global ``site-packages``. As a result, it
118 won't see new additions to the global ``site-packages``.
119
120 This script only symlinks a small portion of the standard library
121 into the environment, and so on Windows it is feasible to simply
122 copy these files over. Also, it creates a new/empty
123 ``site-packages`` and also adds the global ``site-packages`` to the
124 path, so updates are tracked separately. This script also installs
125 Setuptools automatically, saving a step and avoiding the need for
126 network access.
127
128 * `zc.buildout <http://pypi.python.org/pypi/zc.buildout>`_ doesn't
129 create an isolated Python environment in the same style, but
130 achieves similar results through a declarative config file that sets
131 up scripts with very particular packages. As a declarative system,
132 it is somewhat easier to repeat and manage, but more difficult to
133 experiment with. ``zc.buildout`` includes the ability to setup
134 non-Python systems (e.g., a database server or an Apache instance).
135
136 I *strongly* recommend anyone doing application development or
137 deployment use one of these tools.
OLDNEW
« no previous file with comments | « bootstrap/virtualenv/docs/development.rst ('k') | bootstrap/virtualenv/docs/installation.rst » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698