Skip to content
Switch branches/tags

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time


Autoindex lets you create a private index for pip, similar to PyPI but with only the packages you need and additional private packages.

This lets you:

  • Mirror the libraries you use (which you should absolutely do since some tend to disappear or become unavailable from time to time),
  • Serve your proprietary packages on that index.

Packages are downloaded to a directory, the index is generated using this directory and you only need a web server to serve that directory to the public.

If you need security, just serve that index on SSL + HTTP Basic authentication. Then to use it with pip:

pip install -i

Or, in a requirements.txt file:



Install it somewhere on your machine:

git clone
cd autoindex
python install

Then create the autoindex public directory and configure your web server to serve it:

mkdir /var/www/autoindex

Create a /var/www/autoindex/mirror file that lists the packages you want to mirror (one per line), for instance:


Note that if a package has dependencies, they must be listed as well. Autoindex is that dumb, it won't parse deps for you.

Then setup a cron job to start mirroring:

@daily /path/to/autoindex -d /var/www/autoindex mirror

Run it with the period you want, but don't be rude to PyPI. If you want to hit another mirror than, make it so:

/path/to/autoindex -d /var/www/autoindex -i mirror

And finally, if you run this on a linux box (why wouldn't you?) you can run the watcher to update the index when a file changes. This way making a release is as simple as scp'ing a file to the autoindex dir:

/path/to/autoindex -d /var/www/autoindex watch

(Put this on a process supervisor like supervisor or circus in case it crashes.)

If you can't do that for some reason, just periodically regenerate the index:

/path/to/autoindex -d /var/www/autoindex index

If you want to log crashes to Sentry, just install raven in the same environment as autoindex and run the processes with a SENTRY_DSN environment variable.


Partial PyPI mirror + private package index



No releases published


No packages published