Enthought Deployment Manager¶
Enthought Deployment Manager (EDM) is Enthought’s environment and application manager. You can also think of EDM as the new enstaller.
EDM attempts to implement the best principles of virtualenv managers such as virtualenvwrapper and pew as well as the Ruby Version Manager (rvm). It also derives some ideas from Nix. EDM’s main features are:
- create multiple, self-contained environments
- state-of-the-art SAT solver with support for conflicts, provides, and other features available in advanced package managers
- support the existing set of ~ 500 Enthought binary packages on Linux, OS X and Windows
- layered architecture: the core is defined to be useable by 3rd party programs (IDE, GUI) through a well defined API
- distributed as a small (~10 Mb), single file binary on Unix. Native installers are provided for Debian/Ubuntu (.deb), Windows (.msi), RHEL/Fedora (.rmp), and OS X (.pkg).
- experimental support for multiple python versions (2 and 3), implementations (cpython, pypy) and even languages (julia).
- extensive inline documentation
A basic workflow looks as follows:
# will install scipy in your default environment $ edm install scipy # starts a new shell in the default environment $ edm shell (edm) $ python -c "import scipy" $ exit # exit the shell # If you prefer virtualenv-like activation $ source edm-activate (edm) $ python -c "import scipy" $ deactivate
Multiple environments may be created through the -e/–environment option:
$ edm install "scipy < 0.17" -e test-old-scipy $ edm shell -e test-old-scipy # or using virtualenv-like activation $ source edm-activate test-old-scipy
To install an alternative runtime (experimental, not available on every platform):
# Create a minimal pypy environment w/ pypy interpreter $ edm environments create test-pypi --implementation pypy # Create a minimal julia environment $ edm environments create test-julia --implementation julia # To list available runtimes: $ edm available-runtimes
The basic command line is documented in the quick usage guide.
Internally, it is designed as a library with a corresponding CLI it; its API is documented in the API reference. The goal of the library is to support EDM integration with IDEs, applications, etc.
If you are simply an EDM user, this is the documentation of interest to you.
- Quick Reference
- Advanced configuration
- Tips and Tricks
Documentation for developers interested in using EDM in their own code.
Documentation for developers looking to contribute to the EDM project.
For large, complex new features, we try to go through written specifications, called Deployment Enhancement Proposal, aka DEP.