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 collective.eggproxy

How to install collective.eggproxy

  1. Download and install ActivePython
  2. Open Command Prompt
  3. Type pypm install collective.eggproxy
 Python 2.7Python 3.2Python 3.3
Windows (32-bit)
0.5.1 Available View build log
Windows (64-bit)
0.5.1 Available View build log
Mac OS X (10.5+)
0.5.1 Available View build log
Linux (32-bit)
0.5.1 Available View build log
Linux (64-bit)
0.5.1 Available View build log
Lastest release
version 0.5.1 on Jan 5th, 2011

collective.eggproxy package

What is collective.eggproxy ?

collective.eggproxy is a smart mirror for PyPI.

It will collect packages on PyPI only when a program like easy_install or zc.buildout asks for it. In other words, unlike some mirrors that act like rsync and get the whole PyPI base (more than 5 gigas) collective.eggproxy will only get what you need.

At first run collective.eggproxy downloads pypi index and builds a page of links. When a software asks for a specific package, version, etc. collective.eggproxy downloads it if needed and store it locally.

How to use collective.eggproxy ?

After it has been installed, you can just launch it as a standalone server like this:

$ mkdir /tmp/eggs
$ eggproxy_run

The proxy will then be available on the localhost on the port 8888. All package will be downloaded by default into /var/www. If this directory does not exists (or if you are under windows), you will need to configure it, as explained in the next section.

From there you can use it in easy_install like this:

System Message: WARNING/2 (<string>, line 36)

Literal block expected; none found.

easy_install -i http://localhost:8888/ -H "localhost" iw.fss

The iw.fss package will be downloaded, stored locally and provided to easy_insall.

In zc.buildout, just define the index value in the buildout section:


index = http://localhost:8888/ allow-hosts = localhost

That's it !

Advanced configuration

collective.eggproxy can use a configuration file like this:


System Message: ERROR/3 (<string>, line 55)

Inconsistent literal block quoting.

eggs_directory = /path/to/our/cache index = http://pypi.python.org/simple

# Update information for files older than 24h update_interval = 24 # Port number where proxy will run port = 8888 # always_refresh is off by default. Setting it to 1 forces eggproxy to # always attempt a pypi connection. Slower but fresher. always_refresh = 0 # timeout is only needed for always_refresh: it sets a socket timeout. timeout = 3

All options apart from eggs_directory are optional.

collective.eggproxy looks in three locations:

  • An eggproxy.conf in your homedir. This can also be convenient on Windows

System Message: WARNING/2 (<string>, line 73)

Bullet list ends without a blank line; unexpected unindent.

where /etc/ doesn't exist.

  • ../etc/eggproxy.conf as seen from the binary, which you can use for

System Message: WARNING/2 (<string>, line 76)

Bullet list ends without a blank line; unexpected unindent.

buildout setups (see buildout documentation below).

  • /etc/eggproxy.conf.
Running the proxy using Paste

You need a paste configuration file:

$ paster make-config collective.eggproxy myconfig.ini

Feel free to edit the default configuration. This configuration will override the eggproxy.conf file.

Then use paster to serve the application:

$ paster serve configfile.ini

And test it:

$ easy_install -i http://localhost:8888/ -H "*localhost*" iw.fss
Installing collective.eggproxy in a buildout

A quick way to set up collective.eggproxy is by installing it in a buildout. The advantage is that it is all nicely contained in one directory. You can use the following buildout config as an example:


System Message: ERROR/3 (<string>, line 108)

Inconsistent literal block quoting.

parts = console_scripts configuration

[console_scripts] recipe = zc.recipe.egg eggs = collective.eggproxy

[configuration] recipe = collective.recipe.template input = etc/eggproxy.conf.in output = etc/eggproxy.conf

This will put the eggproxy_run and eggproxy_update scripts in the bin/ directory. Add a subdirectory etc/ inside the buildout with an eggproxy.conf.in file:


System Message: ERROR/3 (<string>, line 125)

Inconsistent literal block quoting.

eggs_directory = ${buildout:directory}/var/cache #update_interval = 24 #index = http://pypi.python.org/simple #port = 8888

collective.recipe.template will turn that into an etc/eggproxy.conf with the correct settings

Using the proxy behind Apache

You can also use collective.eggproxy with Apache. You will need for that mod_python 3.3 for apache. It will not work with previous versions.

Debian Etch users: Etch provides 3.2, so users of Etch must get the source package from "Lenny" (testing) and rebuild it with dpkg-buildpackage. Please have a look at the related section in this document to get some help.

An Apache setup for http://servername/pypi can be:

System Message: WARNING/2 (<string>, line 147)

Literal block expected; none found.

Alias /pypi "/path/to/pypi" <Directory "/path/to/pypi"> Order allow,deny Allow from all SetHandler mod_python PythonFixupHandler collective.eggproxy.apache_handler::fixup_handler PythonInterpreter main_interpreter PythonOption URLPrefix /pypi PythonPath "sys.path+['/path/to/collective.eggproxy']" </Directory>

Apache must be able to write to "/path/to/pypi"! (usually Apache user is www-data). For updating proxied egg information you must add the script eggproxy_update into the crontab of this user.

mod_python update on Debian Etch

Quick build instructions from debian "lenny" sources:

$ sudo apt-get build-dep libapache2-mod-python
$ sudo apt-get install fakeroot

Visit http://packages.debian.org/sources/lenny/libapache2-mod-python and grab the files with these extensions:

  • .dsc
  • .orig.tar.gz
  • .diff.gz
$ wget http://ftp.de.debian.org/debian/pool/main/liba/libapache2-mod-python/libapache2-mod-python_3.3.1-3.dsc
$ wget http://ftp.de.debian.org/debian/pool/main/liba/libapache2-mod-python/libapache2-mod-python_3.3.1.orig.tar.gz
$ wget http://ftp.de.debian.org/debian/pool/main/liba/libapache2-mod-python/libapache2-mod-python_3.3.1-3.diff.gz
$ tar xpvzf libapache2-mod-python_3.3.1.orig.tar.gz
$ cd mod_python-3.3.1/
$ gzip -dc ../libapache2-mod-python_3.3.1-3.diff.gz |patch -p1
$ chmod +x debian/rules
$ dpkg-buildpackage -rfakeroot -b
$ cd ..

you should have the following files:

  • libapache2-mod-python_3.3.1-3_i386.deb
  • libapache2-mod-python-doc_3.3.1-3_all.deb

The last step is calling dpkg:

$ sudo dpkg -i libapache2-mod-python_3.3.1-3_i386.deb


0.5.1 (2009-10-19)
  • Added svn url to README. [reinout]
0.5 (2009-10-19)
  • Release fixes (setup.cfg that resulted in a horrid "0.4dev-r1234" release).

System Message: WARNING/2 (<string>, line 221)

Bullet list ends without a blank line; unexpected unindent.

No functional changes.

0.4 (2009-10-19)
  • Fix compatibility issue with Python 2.6 New python version disallow to use

System Message: WARNING/2 (<string>, line 228)

Bullet list ends without a blank line; unexpected unindent.

config.add_section('DEFAULT') (see : http://bugs.python.org/issue1781 and ConfigParser documentation). Patch by Stephane Klein.

  • Updated maintainer email address. [reinout]
0.3.1 (2009-04-28)
  • Fix for non-updating index pages despite ALWAYS_REFRESH setting. Cause:

System Message: WARNING/2 (<string>, line 238)

Bullet list ends without a blank line; unexpected unindent.

already downloaded urls were not re-processed. [reinout]

0.3 (2009-03-16)
  • Updated documentation for buildout change and always_refresh change.

System Message: WARNING/2 (<string>, line 245)

Bullet list ends without a blank line; unexpected unindent.


  • Attempt ../etc/eggproxy.conf as config location to help buildout setups.

System Message: WARNING/2 (<string>, line 248)

Bullet list ends without a blank line; unexpected unindent.


  • Added always_refresh (and timeout) option to always attempt a real pypi

System Message: WARNING/2 (<string>, line 251)

Bullet list ends without a blank line; unexpected unindent.

connection to ensure freshness. [reinout]

  • Added port option to configuration. [reinout]
  • don't lowercase package names
  • improve wsgi app
  • add tests
0.2.0 (2008-09-22)
  • initial version as collective.eggproxy. This package was formerly known as

System Message: WARNING/2 (<string>, line 266)

Bullet list ends without a blank line; unexpected unindent.

iw.eggproxy (https://ingeniweb.svn.sourceforge.net/svnroot/ingeniweb/iw.eggproxy)

  • package index/download files: skip modules installed in local system (resulted

System Message: WARNING/2 (<string>, line 269)

Bullet list ends without a blank line; unexpected unindent.

in copying a directory instead of downloading a file)

  • fixed Update script crashing with invalid/obsolete package name
  • Overriden PackageIndex so that we get eggs distributions for all versions, all

System Message: WARNING/2 (<string>, line 274)

Bullet list ends without a blank line; unexpected unindent.


  • fixed malformed tag in generated indexes
0.1.0 (2008-06-06)
  • initial version created by IngeniSkel


Author: Bertrand Mathieu while at Ingeniweb [b_mathieu]

Current maintainer: Reinout van Rees at The Health Agency

Subscribe to package updates

Last updated Jan 5th, 2011

Download Stats

Last month:1

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.