[Distutils] EasyInstall 0.4a1: now with PyPI autodownload

Phillip J. Eby pje at telecommunity.com
Mon Jun 6 00:22:48 CEST 2005

I've just released a new version of EasyInstall, that supports automatic 
package location via PyPI; installing a package can now be as simple as:

     easy_install "SQLObject>=0.6"

There are many new options and features related to this; see the 
EasyInstall home page for more information:


For the benefit of the PyPI maintainers, here is a summary of EasyInstall's 
fairly minimal assumptions about PyPI's current behavior, assuming that 
"base-url" is the root URL of the package index:

    * Going to "base-url/SomePackage" produces an HTML page that either has 
a title containing "Index of Packages" and links to zero or more pages for 
specific versions, or else it is a single-version package page.

    * Single-version package pages may have a home page and download URL 
link, each of which occurs after '<th>Home Page' and '<th>Download URL' 
respectively, if present.

    * Going to "base-url/" (note trailing '/') produces an HTML page 
containing links to all active versions of registered packages

    * Links to package pages always have URLs of the form 
"base-url/SomePackage/itsVersion" - i.e., exactly two path parts following 
the base URL, with no query strings, parameters, fragments, etc.

EasyInstall should continue to work with PyPI if these assumptions continue 
to hold.  However, I'd also like to suggest that PyPI deprecate the use of 
spaces and other non-alphanumeric characters (other than '-') in package 
names, and move to a case-insensitive matching mechanism for package 
names.  (Currently, if a user types a package name in the wrong case, 
EasyInstall downloads the full package list in order to do its own 
case-insensitive search.)

By the way, EasyInstall does not rely solely on the download URL of a PyPI 
entry, nor does it assume that the download URL is in fact the URL where 
the package's source distribution is found.  Instead, EasyInstall inspects 
the URLs for whether the extension suggests an egg or source 
distribution.  If not, it retrieves the listed URL, and if it contains 
HTML, it scans the HTML for links to egg or source distributions (again 
identified by extension).  It does this for both the home page and the 
download URL, in case there is a usable download link on the package's home 

This approach was chosen to maximise the odds of successful downloading, 
given the current contents of PyPI.

More information about the Distutils-SIG mailing list