OLD | NEW |
| (Empty) |
1 Reference Guide | |
2 =============== | |
3 | |
4 ``virtualenv`` Command | |
5 ---------------------- | |
6 | |
7 .. _usage: | |
8 | |
9 Usage | |
10 ~~~~~ | |
11 | |
12 :command:`virtualenv [OPTIONS] ENV_DIR` | |
13 | |
14 Where ``ENV_DIR`` is an absolute or relative path to a directory to create | |
15 the virtual environment in. | |
16 | |
17 .. _options: | |
18 | |
19 Options | |
20 ~~~~~~~ | |
21 | |
22 .. program: virtualenv | |
23 | |
24 .. option:: --version | |
25 | |
26 show program's version number and exit | |
27 | |
28 .. option:: -h, --help | |
29 | |
30 show this help message and exit | |
31 | |
32 .. option:: -v, --verbose | |
33 | |
34 Increase verbosity. | |
35 | |
36 .. option:: -q, --quiet | |
37 | |
38 Decrease verbosity. | |
39 | |
40 .. option:: -p PYTHON_EXE, --python=PYTHON_EXE | |
41 | |
42 The Python interpreter to use, e.g., | |
43 --python=python2.5 will use the python2.5 interpreter | |
44 to create the new environment. The default is the | |
45 interpreter that virtualenv was installed with | |
46 (like ``/usr/bin/python``) | |
47 | |
48 .. option:: --clear | |
49 | |
50 Clear out the non-root install and start from scratch. | |
51 | |
52 .. option:: --system-site-packages | |
53 | |
54 Give the virtual environment access to the global | |
55 site-packages. | |
56 | |
57 .. option:: --always-copy | |
58 | |
59 Always copy files rather than symlinking. | |
60 | |
61 .. option:: --relocatable | |
62 | |
63 Make an EXISTING virtualenv environment relocatable. | |
64 This fixes up scripts and makes all .pth files relative. | |
65 | |
66 .. option:: --unzip-setuptools | |
67 | |
68 Unzip Setuptools when installing it. | |
69 | |
70 .. option:: --no-setuptools | |
71 | |
72 Do not install setuptools (or pip) in the new | |
73 virtualenv. | |
74 | |
75 .. option:: --no-pip | |
76 | |
77 Do not install pip in the new virtualenv. | |
78 | |
79 .. option:: --extra-search-dir=DIR | |
80 | |
81 Directory to look for setuptools/pip distributions in. | |
82 This option can be specified multiple times. | |
83 | |
84 .. option:: --prompt=PROMPT | |
85 | |
86 Provides an alternative prompt prefix for this | |
87 environment. | |
88 | |
89 .. option:: --never-download | |
90 | |
91 DEPRECATED. Retained only for backward compatibility. | |
92 This option has no effect. Virtualenv never downloads | |
93 pip or setuptools. | |
94 | |
95 .. option:: --no-site-packages | |
96 | |
97 DEPRECATED. Retained only for backward compatibility. | |
98 Not having access to global site-packages is now the | |
99 default behavior. | |
100 | |
101 .. option:: --distribute | |
102 .. option:: --setuptools | |
103 | |
104 Legacy; now have no effect. Before version 1.10 these could be used | |
105 to choose whether to install Distribute_ or Setuptools_ into the created | |
106 virtualenv. Distribute has now been merged into Setuptools, and the | |
107 latter is always installed. | |
108 | |
109 .. _Distribute: https://pypi.python.org/pypi/distribute | |
110 .. _Setuptools: https://pypi.python.org/pypi/setuptools | |
111 | |
112 | |
113 Configuration | |
114 ------------- | |
115 | |
116 Environment Variables | |
117 ~~~~~~~~~~~~~~~~~~~~~ | |
118 | |
119 Each command line option is automatically used to look for environment | |
120 variables with the name format ``VIRTUALENV_<UPPER_NAME>``. That means | |
121 the name of the command line options are capitalized and have dashes | |
122 (``'-'``) replaced with underscores (``'_'``). | |
123 | |
124 For example, to automatically use a custom Python binary instead of the | |
125 one virtualenv is run with you can also set an environment variable:: | |
126 | |
127 $ export VIRTUALENV_PYTHON=/opt/python-3.3/bin/python | |
128 $ virtualenv ENV | |
129 | |
130 It's the same as passing the option to virtualenv directly:: | |
131 | |
132 $ virtualenv --python=/opt/python-3.3/bin/python ENV | |
133 | |
134 This also works for appending command line options, like ``--find-links``. | |
135 Just leave an empty space between the passed values, e.g.:: | |
136 | |
137 $ export VIRTUALENV_EXTRA_SEARCH_DIR="/path/to/dists /path/to/other/dists" | |
138 $ virtualenv ENV | |
139 | |
140 is the same as calling:: | |
141 | |
142 $ virtualenv --extra-search-dir=/path/to/dists --extra-search-dir=/path/to/oth
er/dists ENV | |
143 | |
144 .. envvar:: VIRTUAL_ENV_DISABLE_PROMPT | |
145 | |
146 Any virtualenv created when this is set to a non-empty value will not have | |
147 it's :ref:`activate` modify the shell prompt. | |
148 | |
149 | |
150 Configuration File | |
151 ~~~~~~~~~~~~~~~~~~ | |
152 | |
153 virtualenv also looks for a standard ini config file. On Unix and Mac OS X | |
154 that's ``$HOME/.virtualenv/virtualenv.ini`` and on Windows, it's | |
155 ``%APPDATA%\virtualenv\virtualenv.ini``. | |
156 | |
157 The names of the settings are derived from the long command line option, | |
158 e.g. the option :option:`--python <-p>` would look like this:: | |
159 | |
160 [virtualenv] | |
161 python = /opt/python-3.3/bin/python | |
162 | |
163 Appending options like :option:`--extra-search-dir` can be written on multiple | |
164 lines:: | |
165 | |
166 [virtualenv] | |
167 extra-search-dir = | |
168 /path/to/dists | |
169 /path/to/other/dists | |
170 | |
171 Please have a look at the output of :option:`--help <-h>` for a full list | |
172 of supported options. | |
173 | |
174 | |
175 Extending Virtualenv | |
176 -------------------- | |
177 | |
178 | |
179 Creating Your Own Bootstrap Scripts | |
180 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | |
181 | |
182 While this creates an environment, it doesn't put anything into the | |
183 environment. Developers may find it useful to distribute a script | |
184 that sets up a particular environment, for example a script that | |
185 installs a particular web application. | |
186 | |
187 To create a script like this, call | |
188 :py:func:`virtualenv.create_bootstrap_script`, and write the | |
189 result to your new bootstrapping script. | |
190 | |
191 .. py:function:: create_bootstrap_script(extra_text) | |
192 | |
193 Creates a bootstrap script from ``extra_text``, which is like | |
194 this script but with extend_parser, adjust_options, and after_install hooks. | |
195 | |
196 This returns a string that (written to disk of course) can be used | |
197 as a bootstrap script with your own customizations. The script | |
198 will be the standard virtualenv.py script, with your extra text | |
199 added (your extra text should be Python code). | |
200 | |
201 If you include these functions, they will be called: | |
202 | |
203 .. py:function:: extend_parser(optparse_parser) | |
204 | |
205 You can add or remove options from the parser here. | |
206 | |
207 .. py:function:: adjust_options(options, args) | |
208 | |
209 You can change options here, or change the args (if you accept | |
210 different kinds of arguments, be sure you modify ``args`` so it is | |
211 only ``[DEST_DIR]``). | |
212 | |
213 .. py:function:: after_install(options, home_dir) | |
214 | |
215 After everything is installed, this function is called. This | |
216 is probably the function you are most likely to use. An | |
217 example would be:: | |
218 | |
219 def after_install(options, home_dir): | |
220 if sys.platform == 'win32': | |
221 bin = 'Scripts' | |
222 else: | |
223 bin = 'bin' | |
224 subprocess.call([join(home_dir, bin, 'easy_install'), | |
225 'MyPackage']) | |
226 subprocess.call([join(home_dir, bin, 'my-package-script'), | |
227 'setup', home_dir]) | |
228 | |
229 This example immediately installs a package, and runs a setup | |
230 script from that package. | |
231 | |
232 Bootstrap Example | |
233 ~~~~~~~~~~~~~~~~~ | |
234 | |
235 Here's a more concrete example of how you could use this:: | |
236 | |
237 import virtualenv, textwrap | |
238 output = virtualenv.create_bootstrap_script(textwrap.dedent(""" | |
239 import os, subprocess | |
240 def after_install(options, home_dir): | |
241 etc = join(home_dir, 'etc') | |
242 if not os.path.exists(etc): | |
243 os.makedirs(etc) | |
244 subprocess.call([join(home_dir, 'bin', 'easy_install'), | |
245 'BlogApplication']) | |
246 subprocess.call([join(home_dir, 'bin', 'paster'), | |
247 'make-config', 'BlogApplication', | |
248 join(etc, 'blog.ini')]) | |
249 subprocess.call([join(home_dir, 'bin', 'paster'), | |
250 'setup-app', join(etc, 'blog.ini')]) | |
251 """)) | |
252 f = open('blog-bootstrap.py', 'w').write(output) | |
253 | |
254 Another example is available `here`__. | |
255 | |
256 .. __: https://github.com/socialplanning/fassembler/blob/master/fassembler/creat
e-venv-script.py | |
OLD | NEW |