OLD | NEW |
| (Empty) |
1 User Guide | |
2 ========== | |
3 | |
4 | |
5 Usage | |
6 ----- | |
7 | |
8 Virtualenv has one basic command:: | |
9 | |
10 $ virtualenv ENV | |
11 | |
12 Where ``ENV`` is a directory to place the new virtual environment. It has | |
13 a number of usual effects (modifiable by many :ref:`options`): | |
14 | |
15 - :file:`ENV/lib/` and :file:`ENV/include/` are created, containing supporting | |
16 library files for a new virtualenv python. Packages installed in this | |
17 environment will live under :file:`ENV/lib/pythonX.X/site-packages/`. | |
18 | |
19 - :file:`ENV/bin` is created, where executables live - noticeably a new | |
20 :command:`python`. Thus running a script with ``#! /path/to/ENV/bin/python`` | |
21 would run that script under this virtualenv's python. | |
22 | |
23 - The crucial packages pip_ and setuptools_ are installed, which allow other | |
24 packages to be easily installed to the environment. This associated pip | |
25 can be run from :file:`ENV/bin/pip`. | |
26 | |
27 The python in your new virtualenv is effectively isolated from the python that | |
28 was used to create it. | |
29 | |
30 .. _pip: https://pypi.python.org/pypi/pip | |
31 .. _setuptools: https://pypi.python.org/pypi/setuptools | |
32 | |
33 | |
34 .. _activate: | |
35 | |
36 activate script | |
37 ~~~~~~~~~~~~~~~ | |
38 | |
39 In a newly created virtualenv there will also be a :command:`activate` shell | |
40 script. For Windows systems, activation scripts are provided for | |
41 the Command Prompt and Powershell. | |
42 | |
43 On Posix systems, this resides in :file:`/ENV/bin/`, so you can run:: | |
44 | |
45 $ source bin/activate | |
46 | |
47 For some shells (e.g. the original Bourne Shell) you may need to use the | |
48 :command:`.` command, when :command:`source` does not exist. | |
49 | |
50 This will change your ``$PATH`` so its first entry is the virtualenv's | |
51 ``bin/`` directory. (You have to use ``source`` because it changes your | |
52 shell environment in-place.) This is all it does; it's purely a | |
53 convenience. If you directly run a script or the python interpreter | |
54 from the virtualenv's ``bin/`` directory (e.g. ``path/to/ENV/bin/pip`` | |
55 or ``/path/to/ENV/bin/python-script.py``) there's no need for | |
56 activation. | |
57 | |
58 The ``activate`` script will also modify your shell prompt to indicate | |
59 which environment is currently active. To disable this behaviour, see | |
60 :envvar:`VIRTUAL_ENV_DISABLE_PROMPT`. | |
61 | |
62 To undo these changes to your path (and prompt), just run:: | |
63 | |
64 $ deactivate | |
65 | |
66 On Windows, the equivalent `activate` script is in the ``Scripts`` folder:: | |
67 | |
68 > \path\to\env\Scripts\activate | |
69 | |
70 And type ``deactivate`` to undo the changes. | |
71 | |
72 Based on your active shell (CMD.exe or Powershell.exe), Windows will use | |
73 either activate.bat or activate.ps1 (as appropriate) to activate the | |
74 virtual environment. If using Powershell, see the notes about code signing | |
75 below. | |
76 | |
77 .. note:: | |
78 | |
79 If using Powershell, the ``activate`` script is subject to the | |
80 `execution policies`_ on the system. By default on Windows 7, the system's | |
81 excution policy is set to ``Restricted``, meaning no scripts like the | |
82 ``activate`` script are allowed to be executed. But that can't stop us | |
83 from changing that slightly to allow it to be executed. | |
84 | |
85 In order to use the script, you can relax your system's execution | |
86 policy to ``AllSigned``, meaning all scripts on the system must be | |
87 digitally signed to be executed. Since the virtualenv activation | |
88 script is signed by one of the authors (Jannis Leidel) this level of | |
89 the execution policy suffices. As an administrator run:: | |
90 | |
91 PS C:\> Set-ExecutionPolicy AllSigned | |
92 | |
93 Then you'll be asked to trust the signer, when executing the script. | |
94 You will be prompted with the following:: | |
95 | |
96 PS C:\> virtualenv .\foo | |
97 New python executable in C:\foo\Scripts\python.exe | |
98 Installing setuptools................done. | |
99 Installing pip...................done. | |
100 PS C:\> .\foo\scripts\activate | |
101 | |
102 Do you want to run software from this untrusted publisher? | |
103 File C:\foo\scripts\activate.ps1 is published by E=jannis@leidel.info, | |
104 CN=Jannis Leidel, L=Berlin, S=Berlin, C=DE, Description=581796-Gh7xfJxkx
QSIO4E0 | |
105 and is not trusted on your system. Only run scripts from trusted publish
ers. | |
106 [V] Never run [D] Do not run [R] Run once [A] Always run [?] Help | |
107 (default is "D"):A | |
108 (foo) PS C:\> | |
109 | |
110 If you select ``[A] Always Run``, the certificate will be added to the | |
111 Trusted Publishers of your user account, and will be trusted in this | |
112 user's context henceforth. If you select ``[R] Run Once``, the script will | |
113 be run, but you will be prometed on a subsequent invocation. Advanced users | |
114 can add the signer's certificate to the Trusted Publishers of the Computer | |
115 account to apply to all users (though this technique is out of scope of this | |
116 document). | |
117 | |
118 Alternatively, you may relax the system execution policy to allow running | |
119 of local scripts without verifying the code signature using the following:: | |
120 | |
121 PS C:\> Set-ExecutionPolicy RemoteSigned | |
122 | |
123 Since the ``activate.ps1`` script is generated locally for each virtualenv, | |
124 it is not considered a remote script and can then be executed. | |
125 | |
126 .. _`execution policies`: http://technet.microsoft.com/en-us/library/dd347641.as
px | |
127 | |
128 The :option:`--system-site-packages` Option | |
129 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | |
130 | |
131 If you build with ``virtualenv --system-site-packages ENV``, your virtual | |
132 environment will inherit packages from ``/usr/lib/python2.7/site-packages`` | |
133 (or wherever your global site-packages directory is). | |
134 | |
135 This can be used if you have control over the global site-packages directory, | |
136 and you want to depend on the packages there. If you want isolation from the | |
137 global system, do not use this flag. | |
138 | |
139 Windows Notes | |
140 ~~~~~~~~~~~~~ | |
141 | |
142 Some paths within the virtualenv are slightly different on Windows: scripts and | |
143 executables on Windows go in ``ENV\Scripts\`` instead of ``ENV/bin/`` and | |
144 libraries go in ``ENV\Lib\`` rather than ``ENV/lib/``. | |
145 | |
146 To create a virtualenv under a path with spaces in it on Windows, you'll need | |
147 the `win32api <http://sourceforge.net/projects/pywin32/>`_ library installed. | |
148 | |
149 | |
150 Using Virtualenv without ``bin/python`` | |
151 --------------------------------------- | |
152 | |
153 Sometimes you can't or don't want to use the Python interpreter | |
154 created by the virtualenv. For instance, in a `mod_python | |
155 <http://www.modpython.org/>`_ or `mod_wsgi <http://www.modwsgi.org/>`_ | |
156 environment, there is only one interpreter. | |
157 | |
158 Luckily, it's easy. You must use the custom Python interpreter to | |
159 *install* libraries. But to *use* libraries, you just have to be sure | |
160 the path is correct. A script is available to correct the path. You | |
161 can setup the environment like:: | |
162 | |
163 activate_this = '/path/to/env/bin/activate_this.py' | |
164 execfile(activate_this, dict(__file__=activate_this)) | |
165 | |
166 This will change ``sys.path`` and even change ``sys.prefix``, but also allow | |
167 you to use an existing interpreter. Items in your environment will show up | |
168 first on ``sys.path``, before global items. However, global items will | |
169 always be accessible (as if the :option:`--system-site-packages` flag had been | |
170 used in creating the environment, whether it was or not). Also, this cannot undo | |
171 the activation of other environments, or modules that have been imported. | |
172 You shouldn't try to, for instance, activate an environment before a web | |
173 request; you should activate *one* environment as early as possible, and not | |
174 do it again in that process. | |
175 | |
176 Making Environments Relocatable | |
177 ------------------------------- | |
178 | |
179 **Note:** this option is somewhat experimental, and there are probably | |
180 caveats that have not yet been identified. | |
181 | |
182 .. warning:: | |
183 | |
184 The ``--relocatable`` option currently has a number of issues, | |
185 and is not guaranteed to work in all circumstances. It is possible | |
186 that the option will be deprecated in a future version of ``virtualenv``. | |
187 | |
188 Normally environments are tied to a specific path. That means that | |
189 you cannot move an environment around or copy it to another computer. | |
190 You can fix up an environment to make it relocatable with the | |
191 command:: | |
192 | |
193 $ virtualenv --relocatable ENV | |
194 | |
195 This will make some of the files created by setuptools use relative paths, | |
196 and will change all the scripts to use ``activate_this.py`` instead of using | |
197 the location of the Python interpreter to select the environment. | |
198 | |
199 **Note:** scripts which have been made relocatable will only work if | |
200 the virtualenv is activated, specifically the python executable from | |
201 the virtualenv must be the first one on the system PATH. Also note that | |
202 the activate scripts are not currently made relocatable by | |
203 ``virtualenv --relocatable``. | |
204 | |
205 **Note:** you must run this after you've installed *any* packages into | |
206 the environment. If you make an environment relocatable, then | |
207 install a new package, you must run ``virtualenv --relocatable`` | |
208 again. | |
209 | |
210 Also, this **does not make your packages cross-platform**. You can | |
211 move the directory around, but it can only be used on other similar | |
212 computers. Some known environmental differences that can cause | |
213 incompatibilities: a different version of Python, when one platform | |
214 uses UCS2 for its internal unicode representation and another uses | |
215 UCS4 (a compile-time option), obvious platform changes like Windows | |
216 vs. Linux, or Intel vs. ARM, and if you have libraries that bind to C | |
217 libraries on the system, if those C libraries are located somewhere | |
218 different (either different versions, or a different filesystem | |
219 layout). | |
220 | |
221 If you use this flag to create an environment, currently, the | |
222 :option:`--system-site-packages` option will be implied. | |
223 | |
224 The :option:`--extra-search-dir` option | |
225 --------------------------------------- | |
226 | |
227 This option allows you to provide your own versions of setuptools and/or | |
228 pip to use instead of the embedded versions that come with virtualenv. | |
229 | |
230 To use this feature, pass one or more ``--extra-search-dir`` options to | |
231 virtualenv like this:: | |
232 | |
233 $ virtualenv --extra-search-dir=/path/to/distributions ENV | |
234 | |
235 The ``/path/to/distributions`` path should point to a directory that contains | |
236 setuptools and/or pip wheels. | |
237 | |
238 virtualenv will look for wheels in the specified directories, but will use | |
239 pip's standard algorithm for selecting the wheel to install, which looks for | |
240 the latest compatible wheel. | |
241 | |
242 As well as the extra directories, the search order includes: | |
243 | |
244 #. The ``virtualenv_support`` directory relative to virtualenv.py | |
245 #. The directory where virtualenv.py is located. | |
246 #. The current directory. | |
247 | |
248 If no satisfactory local distributions are found, virtualenv will | |
249 fail. Virtualenv will never download packages. | |
OLD | NEW |