deployment – Maven equivalent for python
deployment – Maven equivalent for python
Python uses distutils and setuptools for dependency and packaging.
Heres a tutorial which explains basics: http://docs.activestate.com/activepython/3.2/diveintopython3/html/packaging.html
In short, you will have setup.py file, which has dependency and script compilation/installation information, and you can build eggs, dist tarballs, binary tarballs, etc with it.
There is no direct match. However, the closest you can get:
- zc.buildout: It can setup closed environments, download/handle dependencies, initialize scripts, etc. It also builds on plugins (or recipes, as they call them). I used it a few years ago when it was in beta stages, probably it has evolved since then. There is learning curve, as with Maven, but its also the most powerful.
Other offerings are subsets of Maven/zc.buildout:
- Setuptools: package creation / installation
- Pip: dependency management
- Virtualenv + virtualenvwrapper: Managing separate python environments (something you dont need with Java)
You probably know Ant and shell scripting, so you could check also these Python tools:
- Fabric or Paver: command-line task runners with added flavors. They wrap your traditional command-line execution in python, and allow to manage various tasks in a more powerful way (task dependencies, interpreting output, running commands in remote server, etc.). Basically nothing you couldnt do with shell scripting, but in python, its much less cryptic.
deployment – Maven equivalent for python
Id like to point out PyBuilder which is heavily inspired by maven but uses python instead of XML for configuration, so its actually readable, IMHO.
There is a plugin for dependency management (uses pip under the hood and differentiates between build and runtime dependencies) and, not unlike maven, you can run through the full build lifecycle with a single command.