NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
PyPI · #9 most downloaded on PyPI
Most extensible Python build backend with support for C/C++ extension modules
Last release 1 months ago
08 Aug 2026
Ships unpredictably
gaps range from 9 days to 8 months
Nearly every release is documented
notes for 60 of the last 60 stable releases
10 versions withdrawn
withdrawn after publishing
20 years old
625 releases · first in 2006
Distribute #386: Allow other positional and keyword arguments to os.open.
Distribute #386: Allow other positional and keyword arguments to os.open.
Corrected dependency on certifi mis-referenced in 0.9.
13 Jul 2013
Distribute #386 : Allow other positional and keyword arguments to os.open.
Corrected dependency on certifi mis-referenced in 0.9.
package_index now validates hashes other than MD5 in download links.
One column per quarter.
13 Jul 2013
package_index now validates hashes other than MD5 in download links.
Code base now runs on Python 2.4 - Python 3.3 without Python 2to3 conversion.
Code base now runs on Python 2.4 - Python 3.3 without Python 2to3 conversion.
05 Jul 2013
Code base now runs on Python 2.4 - Python 3.3 without Python 2to3 conversion.
Distribute #375: Yet another fix for yet another regression.
Distribute #375: Yet another fix for yet another regression.
04 Jul 2013
Distribute #375 : Yet another fix for yet another regression.
Distribute #375: Repair AttributeError created in last release (redo).
Distribute #375: Repair AttributeError created in last release (redo).
Issue #30: Added test for get_cache_path.
02 Jul 2013
Distribute #375 : Repair AttributeError created in last release (redo).
Issue #30 : Added test for get_cache_path.
Distribute #375: Repair AttributeError created in last release.
Distribute #375: Repair AttributeError created in last release.
02 Jul 2013
Distribute #375 : Repair AttributeError created in last release.
Now honor the environment variable SETUPTOOLS_DISABLE_VERSIONED_EASY_INSTALL_SCRIPT in addition to the now deprecated DISTRIBUTE_DISABLE_VERSIONED_EAS…
Issue #21: Restore Python 2.4 compatibility in test_easy_install.
Distribute #375: Merged additional warning from Distribute 0.6.46.
Now honor the environment variable SETUPTOOLS_DISABLE_VERSIONED_EASY_INSTALL_SCRIPT in addition to the now deprecated DISTRIBUTE_DISABLE_VERSIONED_EASY_INSTALL_SCRIPT.
Issue #20: Fix comparison of parsed SVN version on Python 3.
Issue #20: Fix comparison of parsed SVN version on Python 3.
19 Jun 2013
Issue #20 : Fix comparison of parsed SVN version on Python 3.
Issue #1: Disable installation of Windows-specific files on non-Windows systems.
Issue #1: Disable installation of Windows-specific files on non-Windows systems.
Use new sysconfig module with Python 2.7 or >=3.2.
18 Jun 2013
Issue #1 : Disable installation of Windows-specific files on non-Windows systems.
Use new sysconfig module with Python 2.7 or >=3.2.
Issue #14: Use markerlib when the parser module is not available.
Issue #14: Use markerlib when the parser module is not available.
Issue #10: ez_setup.py now uses HTTPS to download setuptools from PyPI.
09 Jun 2013
Issue #14 : Use markerlib when the parser module is not available.
Issue #10 : ez_setup.py now uses HTTPS to download setuptools from PyPI.
Nothing published for this version
Nothing published for this version
Removed use of deprecated md5 module if hashlib is available
non-Windows platforms, due to distutils not handling manifest file line endings correctly.
Updated Pyrex support to work with Pyrex 0.9.6 and higher.
Minor changes for Jython compatibility, including skipping tests that can't work on Jython.
Fixed not installing eggs in install_requires if they were also used for setup_requires or tests_require.
Fixed not fetching eggs in install_requires when running tests.
Allow ez_setup.use_setuptools() to upgrade existing setuptools installations when called from a standalone setup.py.
Added a warning if a namespace package is declared, but its parent package is not also declared as a namespace.
Support Subversion 1.5
Removed use of deprecated md5 module if hashlib is available
Fixed bdist_wininst upload trying to upload the .exe twice
Fixed bdist_egg putting a native_libs.txt in the source package's .egg-info, when it should only be in the built egg's EGG-INFO.
Ensure that _full_name is set on all shared libs before extensions are checked for shared lib usage. (Fixes a bug in the experimental shared library build support.)
Fix to allow unpacked eggs containing native libraries to fail more gracefully under Google App Engine (with an ImportError loading the C-based module, instead of getting a NameError).
Fixed win32.exe support for .pth files, so unnecessary directory nesting is flattened out in the resulting egg. (There was a case-sensitivity problem that affected some distributions, notably pywin32.)
Prevent --help-commands and other junk from showing under Python 2.5 when running easy_install --help.
Fixed GUI scripts sometimes not executing on Windows
Fixed not picking up dependency links from recursive dependencies.
Only make .py, .dll and .so files executable when unpacking eggs
Changes for Jython compatibility
Improved error message when a requirement is also a directory name, but the specified directory is not a source package.
Fixed --allow-hosts option blocking file: URLs
Fixed HTTP SVN detection failing when the page title included a project name (e.g. on SourceForge-hosted SVN)
Fix Jython script installation to handle #! lines better when sys.executable is a script.
Removed use of deprecated md5 module if hashlib is available
Keep site directories (e.g. site-packages) from being included in .pth files.
Nothing published for this version
Fixed distutils.filelist.findall() crashing on broken symlinks, and egg_info command failing on new, uncommitted SVN directories.
egg_info command failing on new, uncommitted SVN directories.
Fix import problems with nested namespace packages installed via --root or --single-version-externally-managed, due to the parent package not having the child package as an attribute.
ftp: download URLs now work correctly.
The default --index-url is now https://pypi.python.org/simple, to use the Python Package Index's new simpler (and faster!) REST API.
Added --egg-path option to develop command, allowing you to force .egg-link files to use relative paths (allowing them to be shared across platforms o
.egg-link files to use relative paths (allowing them to be shared across platforms on a networked drive).
Fix not building binary RPMs correctly.
Fix "eggsecutables" (such as setuptools' own egg) only being runnable with bash-compatible shells.
Fix #! parsing problems in Windows .exe script wrappers, when there was whitespace inside a quoted argument or at the end of the #! line (a regression introduced in 0.6c4).
Fix test command possibly failing if an older version of the project being tested was installed on sys.path ahead of the test source directory.
Fix find_packages() treating ez_setup and directories with . in their names as packages.
EasyInstall no longer aborts the installation process if a URL it wants to retrieve can't be downloaded, unless the URL is an actual package download. Instead, it issues a warning and tries to keep going.
Fixed distutils-style scripts originally built on Windows having their line endings doubled when installed on any platform.
Added --local-snapshots-ok flag, to allow building eggs from projects installed using setup.py develop.
Fixed not HTML-decoding URLs scraped from web pages
Fix uploaded bdist_rpm packages being described as bdist_egg packages under Python versions less than 2.5.
packages under Python versions less than 2.5.
Fix uploaded bdist_wininst packages being described as suitable for "any" version by Python 2.5, even if a --target-version was specified.
Fixed .dll files on Cygwin not having executable permissions when an egg is installed unzipped.
Overhauled Windows script wrapping to support bdist_wininst better. Scripts installed with bdist_wininst will always use #!python.exe or #!pythonw.exe
Scripts installed with bdist_wininst will always use #!python.exe or #!pythonw.exe as the executable name (even when built on non-Windows platforms!), and the wrappers will look for the executable in the script's parent directory (which should find the right version of Python).
Fix upload command not uploading files built by bdist_rpm or bdist_wininst under Python 2.3 and 2.4.
Add support for "eggsecutable" headers: a #!/bin/sh script that is prepended to an .egg file to allow it to be run as a script on Unix-ish platforms. (This is mainly so that setuptools itself can have a single-file installer on Unix, without doing multiple downloads, dealing with firewalls, etc.)
Fix problem with empty revision numbers in Subversion 1.4 entries files
Use cross-platform relative paths in easy-install.pth when doing develop and the source directory is a subdirectory of the installation target directory.
Fix a problem installing eggs with a system packaging tool if the project contained an implicit namespace package; for example if the setup() listed a namespace package foo.bar without explicitly listing foo as a namespace package.
Added support for HTTP "Basic" authentication using http://user:pass@host URLs. If a password-protected page contains links to the same host (and protocol), those links will inherit the credentials used to access the original page.
Removed all special support for Sourceforge mirrors, as Sourceforge's mirror system now works well for non-browser downloads.
Fixed not recognizing win32.exe installers that included a custom bitmap.
Fixed not allowing os.open() of paths outside the sandbox, even if they are opened read-only (e.g. reading /dev/urandom for random numbers, as is done by os.urandom() on some platforms).
Fixed a problem with .pth testing on Windows when sys.executable has a space in it (e.g., the user installed Python to a Program Files directory).
Fixed breakages caused by Subversion 1.4's new "working copy" format
Fixed breakages caused by Subversion 1.4's new "working copy" format
You can once again use "python -m easy_install" with Python 2.4 and above.
Python 2.5 compatibility fixes added.
Generated scripts now use -x on the #! line when sys.executable contains non-ASCII characters, to prevent deprecation warnings about an unspecified en…
its installation location) when a script requests a version that's not available.
Running setup.py develop on a setuptools-using project will now install setuptools if needed, instead of only downloading the egg.
Windows script wrappers now support quoted arguments and arguments containing spaces. (Patch contributed by Jim Fulton.)
The ez_setup.py script now actually works when you put a setuptools .egg alongside it for bootstrapping an offline machine.
A writable installation directory on sys.path is no longer required to download and extract a source distribution using --editable.
Generated scripts now use -x on the #! line when sys.executable contains non-ASCII characters, to prevent deprecation warnings about an unspecified encoding when the script is run.
Fixed AttributeError when trying to download a setup_requires dependency when a distribution lacks a dependency_links setting.
dependency when a distribution lacks a dependency_links setting.
Made zip-safe and not-zip-safe flag files contain a single byte, so as to play better with packaging tools that complain about zero-length files.
Made setup.py develop respect the --no-deps option, which it previously was ignoring.
Support extra_path option to setup() when install is run in backward-compatibility mode.
Source distributions now always include a setup.cfg file that explicitly sets egg_info options such that they produce an identical version number to the source distribution's version number. (Previously, the default version number could be different due to the use of --tag-date, or if the version was overridden on the command line that built the source distribution.)
EasyInstall now includes setuptools version information in the User-Agent string sent to websites it visits.
Fix register not obeying name/version set by egg_info command, if egg_info wasn't explicitly run first on the same command line.
egg_info wasn't explicitly run first on the same command line.
Added --no-date and --no-svn-revision options to egg_info command, to allow suppressing tags configured in setup.cfg.
Fixed redundant warnings about missing README file(s); it should now appear only if you are actually a source distribution.
Fix creating Python wrappers for non-Python scripts
Fix ftp:// directory listing URLs from causing a crash when used in the "Home page" or "Download URL" slots on PyPI.
Fix sys.path_importer_cache not being updated when an existing zipfile or directory is deleted/overwritten.
Fix not recognizing HTML 404 pages from package indexes.
Allow file:// URLs to be used as a package index. URLs that refer to directories will use an internally-generated directory listing if there is no index.html file in the directory.
Allow external links in a package index to be specified using rel="homepage" or rel="download", without needing the old PyPI-specific visible markup.
Suppressed warning message about possibly-misspelled project name, if an egg or link for that project name has already been seen.
Fix bdist_egg not including files in subdirectories of .egg-info.
Fix bdist_egg not including files in subdirectories of .egg-info.
Allow .py files found by the include_package_data option to be automatically included. Remove duplicate data file matches if both include_package_data and package_data are used to refer to the same files.
Fix local --find-links eggs not being copied except with --always-copy.
Fix sometimes not detecting local packages installed outside of "site" directories.
Fix mysterious errors during initial setuptools install, caused by ez_setup trying to run easy_install twice, due to a code fallthru after deleting the egg from which it's running.
Don't install or update a site.py patch when installing to a PYTHONPATH directory with --multi-version, unless an easy-install.pth file is already in
PYTHONPATH directory with --multi-version, unless an easy-install.pth file is already in use there.
Construct .pth file paths in such a way that installing an egg whose name begins with import doesn't cause a syntax error.
Fixed a bogus warning message that wasn't updated since the 0.5 versions.
Strip module from the end of compiled extension modules when computing the name of a .py loader/wrapper. (Python's import machinery ignores this suffi
the name of a .py loader/wrapper. (Python's import machinery ignores this suffix when searching for an extension module.)
Better ambiguity management: accept #egg name/version even if processing what appears to be a correctly-named distutils file, and ignore .egg files with no -, since valid Python .egg files always have a version number (but Scheme eggs often don't).
Support file:// links to directories in --find-links, so that easy_install can build packages from local source checkouts.
Added automatic retry for Sourceforge mirrors. The new download process is to first just try dl.sourceforge.net, then randomly select mirror IPs and remove ones that fail, until something works. The removed IPs stay removed for the remainder of the run.
Ignore bdist_dumb distributions when looking at download URLs.
Your coding agent can read these notes before it upgrades. Set up the MCP server →