How can I make setuptools install a package that”s not on PyPI?


I"ve just started working with setuptools and virtualenv. My package requires the latest python-gearman that is only available from GitHub. The python-gearman version that"s on PyPI is an old one. The Github source is setuptools-compatible, i.e. has, etc. Is there a way to make setuptools download and install the new version instead of looking for it on PyPI and installing the old one?

FYI, the new python-gearman is

Answer rating: 162

The key is to tell easy_install where the package can be downloaded. In this particular case, it can be found at the url However, that link by itself won"t work, because easy_install can"t tell just by looking at the URL what it"s going to get.

By changing it to instead, easy_install will be able to identify the package name and its version.

The final step is to add the URL to your package"s dependency_links, e.g.:

   dependency_links = [""]

Now, when YOUR package is being installed, easy_install will discover that there is a "gearman 2.0.0beta" available for download from that URL, and happily pick it over the one on PyPI, if you specify "gearman>=2.0.0beta" in your dependencies..

(Normally, the way this sort of thing is done is to include a link on one"s PyPI page to the downloadable source; in this case, if the author of the gearman package had included a link like the above, you"d be already set. Typically, people mark the development version with "myproject-dev" and then people use a requirement of "myproject>=somever,==dev", so that if there isn"t a package of somever or higher, easy_install will try to check out or download the release.)

You"ll need to specify --process-dependency-links when using pip. Note that dependency links processing has been deprecated and will be removed in a future release.

Get Solution for free from DataCamp guru