Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Using an extra python package index url with setup.py

Is there a way to use an extra Python package index (ala pip --extra-index-url pypi.example.org mypackage) with setup.py so that running python setup.py install can find the packages hosted on pypi.example.org?

like image 212
Jeremy Avatar asked Jun 27 '14 03:06

Jeremy


People also ask

How do I install Python packages from setup py?

Installing Python Packages with Setup.py To install a package that includes a setup.py file, open a command or terminal window and: cd into the root directory where setup.py is located. Enter: python setup.py install.

What is the PYPI index URL?

The official Python Package Index Remote Storage URL value to enter is https://pypi.org/ . Using https://pypi.python.org/ should also work as long as redirects are maintained. The repository manager can access Python packages and tools from the remote index.

What is Package_dir in setup py?

package_dir = {'': 'lib'} in your setup script. The keys to this dictionary are package names, and an empty package name stands for the root package. The values are directory names relative to your distribution root.

Where are pip indexes stored?

Config file locations are documented https://pip.pypa.io/en/stable/user_guide/#config-file. For me, it was located in /etc/pip.


2 Answers

If you're the package maintainer, and you want to host one or more dependencies for your package somewhere other than PyPi, you can use the dependency_links option of setuptools in your distribution's setup.py file. This allows you to provide an explicit location where your package can be located.

For example:

from setuptools import setup  setup(     name='somepackage',     install_requires=[         'somedep'     ],     dependency_links=[         'https://pypi.example.org/pypi/somedep/'     ]     # ... ) 

If you host your own index server, you'll need to provide links to the pages containing the actual download links for each egg, not the page listing all of the packages (e.g. https://pypi.example.org/pypi/somedep/, not https://pypi.example.org/)

like image 68
Heston Liebowitz Avatar answered Sep 21 '22 06:09

Heston Liebowitz


setuptools uses easy_install under the hood.

It relies on either setup.cfg or ~/.pydistutils.cfg as documented here.

Extra paths to packages can be defined in either of these files with the find_links. You can override the registry url with index_url but cannot supply an extra-index-url. Example below inspired by the docs:

[easy_install] find_links = http://mypackages.example.com/somedir/              http://turbogears.org/download/              http://peak.telecommunity.com/dist/ index-url = https://mypi.example.com 
like image 45
TomDotTom Avatar answered Sep 21 '22 06:09

TomDotTom