Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Multiple projects from one setup.py?

My current setup.py (using setuptools) installs two things, one is tvdb_api (an API wrapper), the other is tvnamer (a command line script)

I wish to make the two available separately, so a user can do..

easy_install tvdb_api

..to only get the API wrapper, or..

easy_install tvnamer

..to install tvnamer (and tvdb_api, as a requirement)

Is this possible without having two separate setup.py scripts? Can you have two separate PyPi packages that come from the same python setup.py upload command..?

like image 438
dbr Avatar asked Apr 20 '09 19:04

dbr


1 Answers

setup.py is just a regular Python file, which by convention sets up packages. By convention, setup.py contains a call to the setuptools or distutils setup() function. If you want to use one setup.py for two packages, you can call a different setup() function based on a command-line argument:

import sys
if len(sys.argv) > 1 and sys.argv[1] == 'script':
    sys.argv = [sys.argv[0]] + sys.argv[2:]
    setup(name='tvnamer', ...)
else:
    setup(name='tvdb_api', ...)

Practically, though, I'd recommend just writing two scripts.

like image 62
Rick Copeland Avatar answered Oct 03 '22 21:10

Rick Copeland