Title: building multiple (binary) packages from a single project
Type: behavior Stage: resolved
Components: Distutils, Documentation Versions:
Status: closed Resolution: works for me
Dependencies: Superseder:
Assigned To: docs@python Nosy List: docs@python, dstufft, eric.araujo, stefan, steven.daprano
Priority: normal Keywords:

Created on 2019-01-26 00:55 by stefan, last changed 2019-03-09 06:08 by stefan. This issue is now closed.

Messages (4)
msg334381 - (view) Author: Stefan Seefeld (stefan) * (Python committer) Date: 2019-01-26 00:55
I'm working on a project that I'd like to split into multiple separately installable components. The main component is a command-line tool without any external dependencies. Another component is a GUI frontend that adds some third-party dependencies.
Therefore, I'd like to distribute the code in a single source package, but separate binary packages (so users can install only what they actually need).

I couldn't find any obvious way to support such a scenario with either `distutils` nor `setuptools`. Is there an easy solution to this ? (I'm currently thinking of adding two `setup()` calls to my `` script. That would then call all commands twice, so I'd need to override the `sdist` command to only build a single (joint) source package.
Is there a better way to achieve what I want ?
msg334382 - (view) Author: Steven D'Aprano (steven.daprano) * (Python committer) Date: 2019-01-26 01:10
This is a bug tracker for reporting bugs and enhancement requests, not a help desk.

Do you have a *specific* feature request or a bug to report? If not, you should ask this on a community forum such as Stackoverflow, Reddit's r/learnpython, the Python-list mailing list or the Python IRC channel.
msg334383 - (view) Author: Stefan Seefeld (stefan) * (Python committer) Date: 2019-01-26 01:14
Yes. Depending on the answer to my question(s), the request either becomes: "please add support for this use-case", or "this use-case isn't documented properly", i.e. a feature request or a bug report. You choose. :-)
msg334384 - (view) Author: Éric Araujo (eric.araujo) * (Python committer) Date: 2019-01-26 02:28
The way to achieve this is to make sure your two components live in two separate directories, each with its

This is the simple way that works with distutils/setuptools and pip install-from-vcs (you can install from a subdir of a repo).
Date User Action Args
2019-03-09 06:08:01stefansetstatus: open -> closed
resolution: works for me
stage: resolved
2019-01-26 02:28:41eric.araujosetmessages: + msg334384
2019-01-26 01:14:00stefansetmessages: + msg334383
2019-01-26 01:10:52steven.dapranosetnosy: + steven.daprano
messages: + msg334382
2019-01-26 00:55:33stefancreate