Welcome, guest | Sign In | My Account | Store | Cart

Notice! PyPM is being replaced with the ActiveState Platform, which enhances PyPM’s build and deploy capabilities. Create your free Platform account to download ActivePython or customize Python with the packages you require and get automatic updates.

pypm install devpi-server

How to install devpi-server

  1. Download and install ActivePython
  2. Open Command Prompt
  3. Type pypm install devpi-server
 Python 2.7Python 3.2Python 3.3
Windows (32-bit)
Windows (64-bit)
Mac OS X (10.5+)
Linux (32-bit)
Linux (64-bit)
1.0 Available View build log
Depended by
Lastest release
version 1.0 on Jan 9th, 2014

consistent robust pypi-cache

You can point pip or easy_install to the root/pypi/+simple/ index, serving as a self-updating transparent cache for pypi-hosted and external packages. Cache-invalidation uses the latest and greatest PyPI protocols. The cache index continues to serve when offline and will resume cache-updates once network is available.

github-style indexes

Each user can have multiple indexes and upload packages and docs via standard setup.py invocations. Users, indexes (and soon projects and releases) are manipulaed through a RESTful HTTP API.

index inheritance

Each index can be configured to merge in other indexes so that it serves both its uploads and all releases from other index(es). For example, an index using root/pypi as a parent is a good place to test out a release candidate before you push it to PyPI.

good defaults and easy deployment

Get started easily and create a permanent devpi-server deployment including pre-configured templates for nginx_ and cron.

separate tool for Packaging/Testing activities

The complimentary devpi-client tool helps to manage users, indexes, logins and typical setup.py-based upload and installation workflows.

See http://doc.devpi.net for getting started and documentation.


  • rename "--datadir" to "--serverdir" to better match the also picked up DEVPI_SERVERDIR environment variable.
  • fix a strange effect in that sometimes tools ask to receive a package url with a "#md5=..." arriving at the server side. We now strip that part out before trying to serve the file.
  • on startup don't create any initial indexes other than the "root/pypi" pypi caching mirror.
  • introduce --start, --stop and --log commands for controling a background devpi-server run. (these commands previously were implemented with the devpi-client and the "server" sub command)
  • fix issue27: provide full list of pypi names in root/pypi's simple view (and simple pages from inheriting indices)
  • default to "eventlet" server when creating deployment with --gendeploy
  • fix issue25: return 403 Forbidden when trying to delete the root user.
  • fix name mangling issue for pypi-cache: "project_name*" is now matched correctly when a lookup for "project-name" happens.
  • fix issue22: don't bypass CDN by default, rather provide an "--bypass-cdn" option to do it (in case you have cache-invalidation troubles)
  • fix issue20 and fix issue23: normalize index specs internally ("/root/dev" -> "root/dev") and check if base indices exist.
  • add Jenkins build job triggering for running the tests for a package through tox.
  • inheritance cleanup: inherited versions for a project are now shadowed and not shown anymore with getreleaselinks() or in +simple pages if the "basename" is exactly shadowed.
  • fix issue16: enrich projectconfig json with a "+shadow" file which lists shadowed "versions"
  • initial wheel support: accept "whl" uploads and support caching of whl files from pypi.python.org
  • implemented internal push operation between devpi indexes
  • show "docs" link if documentation has been uploaded
  • pushing releases to pypi.python.org will now correctly report the filetype/pyversion in the metadata.
  • add setting of acl_upload for indexes. Only the owning user and acl_upload users may upload releases, files or documentation to an index.
  • add --passwd USER option for setting a user's password server-side
  • don't require email setting for creating users


  • fix issue where lookups into subpages of the simple index (simple/NAME/VER) would not trigger a 404 as they should.


  • fixed issue9: caching of packages where upstream provides no last-modified header now works.
  • fixed issue8: only http/https archives are allowed and other schemes (such as ftp) are silently skipped
  • added support for REST DELETE methods of projects and versions on an index
  • added "argcomplete" support for tab completion on options (thanks to Anthon van der Neut)


  • fix /USER/INDEXNAME root views to contain only latest in-stage packages
  • make +api calls return bases so that "devpi use" can show them


  • return 404 for submits to root/pypi
  • properly sorted release file links on stage indexes
  • "push" method on indexes for transfering release files to another pypi index
  • properly handle urls from indexes with ~ and other special chars
  • fix root/pypi and root/dev page serving in various cases


  • implement more precise pypi.python.org CDN/caching invalidation technique, using the most recent PyPI API ("X-PYPI-LAST-SERIAL" on simple pages and xmlrpc.list_packages_with_serial()). also simplify background tasks to become only one async task doing both changelog checking and triggering updates.
  • use a filesystem based storage mechanism instead of Redis
  • prevent automatic decoding of gzip files in case of content encoding
  • XXX preliminarily introduce new int/dev, int/prod indexes where int/dev inherits packages from both int/prod and ext/pypi.
  • XXX introduce preliminary support for client-side "devpi" workflow tool
  • allow uploads to int/dev
  • if no crontab exists for a user, simply create one instead of erroring out. Thanks Andi Albrecht.
  • internal refactoring for better organisation of redis access


  • re-fix issue6: tests and fixes for django-debug-toolbar where recursive scraping was accidentally triggered
  • remove fine-grained http caching for now because caching on the index level seems enough. This avoids an issues that occured when installing icalendar and also some offline/online state change issues.
  • added a note to README for how to upgrade --gendeploy installs
  • remove general dependency on virtualenv which is only needed for --gendeploy. Adapt docs accordingly.
  • remove dependency on pip by shifting the relevant scraping bits directly to _pip.py


  • use pip's link parser rather than beautifulsoup to benefit from link parsing code tested out and maintained in the wild. Adapt README.

  • skip a test if crontab command is not present

    (thanks Markus Zapke-Gruendemann)

  • release 0.8.3 is not useable


  • fix issue6 - some edge cases for link parsing uncovered by BeautifulSoup and CouchApp installs. Thanks Anton Baklanov.
  • fix issue5 - require minimal versions for deps, thanks Andi Albrecht
  • remove superflous include lines in MANIFEST.in


  • fix: change gendeployed supervisord.conf to not autostart processes on "devpi-ctl" invocations. "devpi-ctl help" would autostart the processes after a shutdown which is not very intuitive. This is actually compatible with the documentation.
  • refactor --gendeploy related code to be in gendeploy.py
  • fix: fixate path of devpi-server in gendeployed configuration to point to the freshly installed devpi-server. also add a note to the README.


  • introduce "--gendeploy=TARGETDIR" for generating a virtualenv directory with supervisor-based configuration in TARGETDIR/etc and a TARGETDIR/bin/devpi-ctl helper to control the running of devpi-server and redis-server processes.
  • fix issue4: keep the "changelog" thread active across network/reachability errors. Thanks Laurent Brack.
  • use argparse instead of optparse, simplify and group options
  • fix python2.6 and simplify logging configuration


  • Initial release

Docutils System Messages

System Message: ERROR/3 (<string>, line 41); backlink

Unknown target name: "nginx".

Subscribe to package updates

Last updated Jan 9th, 2014

What does the lock icon mean?

Builds marked with a lock icon are only available via PyPM to users with a current ActivePython Business Edition subscription.

Need custom builds or support?

ActivePython Enterprise Edition guarantees priority access to technical support, indemnification, expert consulting and quality-assured language builds.

Plan on re-distributing ActivePython?

Get re-distribution rights and eliminate legal risks with ActivePython OEM Edition.