xonsh/docs/python_virtual_environments.rst
Stephan Fitzpatrick d729c35edd typo
2018-12-22 12:00:22 -08:00

104 lines
3.3 KiB
ReStructuredText

.. highlight:: bash
.. _python_virtual_environments:
===========================
Python Virtual Environments
===========================
The usual tools for creating Python virtual environments—``venv``, ``virtualenv``, ``pew``—don't play well with xonsh. We won't dig deeper into why it is so, but the general gist is that these tools are hacky and hard-coded for bash, zsh, and other mainstream shells.
Luckily, xonsh ships with its own virtual environments manager called **Vox**.
Vox
===
First, load the vox xontrib::
$ xontrib load vox
To create a new environment with vox, run ``vox new <envname>``::
$ vox new myenv
Creating environment...
Environment "myenv" created. Activate it with "vox activate myenv".
The interpreter ``vox`` uses to create a virtualenv is configured via the ``$VOX_DEFAULT_INTERPRETER`` environment variable.
You may also set the interpreter used to create the virtual environment by passing it explicitly to ``vox new`` i.e.::
$ vox new python2-env -p /usr/local/bin/python2
Under the hood, vox uses Python 3's ``venv`` module to create Python 3 virtualenvs. [this is the default]
If a Python 2 intrepreter is chosen, it will use the Python 2 interpreter's ``virtualenv`` module.
By default, environments are stored in ``~/.virtualenvs``, but you can override it by setting the ``$VIRTUALENV_HOME`` environment variable.
To see all existing environments, run ``vox list``::
$ vox list
Available environments:
eggs
myenv
spam
To activate an environment, run ``vox activate <envname>``::
$ vox activate myenv
Activated "myenv".
Instead of ``activate``, you can call ``workon`` or ``enter``.
If you want to activate an environment which is stored somewhere else (maybe because it was created by another tool) you can pass to ``vox activate`` a path to a virtual environment::
$ vox activate /home/user/myenv
Activated "/home/user/myenv".
To exit the currently active environment, run ``vox deactivate`` or ``vox exit``::
$ vox deactivate
Deactivated "myenv".
To remove an environment, run ``vox remove <envname>``::
$ vox remove myenv
Environment "myenv" removed.
Instead of ``remove``, you can call ``rm``, ``delete``, or ``del``.
To see all available commands, run ``vox help``, ``vox --help``, or ``vox -h``::
Vox is a virtual environment manager for xonsh.
Available commands:
vox new <env>
Create new virtual environment in $VIRTUALENV_HOME
vox activate (workon, enter) <env>
Activate virtual environment
vox deactivate (exit)
Deactivate current virtual environment
vox list (ls)
List environments available in $VIRTUALENV_HOME
vox remove (rm, delete, del) <env> <env2> ...
Remove virtual environments
vox help (-h, --help)
Show help
``virtualenv`` like prompt
--------------------------
Although it's included in the default prompt, you can customize your prompt
to automatically update in the same way as ``virtualenv``.
Simply add the ``'{env_name}'`` variable to your ``$PROMPT``::
$PROMPT = '{env_name: {}}' + restofmyprompt
Note that you do **not** need to load the ``vox`` xontrib for this to work.
For more details see :ref:`customprompt`.