[Distutils] Distributing packages to offline machines

Nick Coghlan ncoghlan at gmail.com
Fri Apr 6 08:50:09 EDT 2018

On 5 April 2018 at 11:11, Eric Gorr <ericgorr at gmail.com> wrote:
> I had a question about distributing python packages to offline machines when
> the offline machine is running a different OS then a machine with an
> internet connection. The packages I am concerned with are third party upon
> which mine depend.
> Based on what I have learned so far, there are three solutions.
> (a) Use a CI to run a fleet of machines for each OS one needs to target to
> obtain the OS specific wheels.
> The issue I see with (a) is the shear amount work it would take to setup and
> maintain such a system.

Depending on just how many packages and how many operating system
versions are involved, this option may be less work that you
anticipate, thanks to the excellent wagon project from Cloudify:

Keep a requirements.txt file or `Pipfile` in source control, then run
CI jobs based on that repo to emit wagon files with all the required
wheels embedded in them (either sourced from PyPI, or built locally in
CI as needed).


P.S. See https://github.com/cloudify-cosmo/wagon/issues/30#issuecomment-374096806
for the technique of supplying a dummy setup.py file that gives wagon
the metadata it wants, without actually needing to define a full top
level "application" package.

P.P.S Depending on how strict the requirement is for "offline wheel
files" vs "offline prebuilt binary dependencies", it may also be worth
your while to explore
(regarding the use of conda as a Python platform manager) and
(regarding the creation of tar-friendly custom conda channels)

Nick Coghlan   |   ncoghlan at gmail.com   |   Brisbane, Australia

More information about the Distutils-SIG mailing list