Distribuyendo paquetes de python a máquinas sin conexión

Digamos que tengo dos máquinas.

macOS 10.13 with internet connection macOS 10.12 with no network connection 

Quiero instalar readline (por ejemplo) a través de una rueda.

Puedo agarrar la rueda con bastante facilidad con:

 pip wheel -w . readline 

y lo que obtengo es:

 readline-6.2.4.1-cp36-cp36m-macosx_10_13_x86_64.whl 

sin embargo, cuando muevo esta rueda sobre la máquina 10.12 e bash instalarla con:

 pip install --no-index --find-links . readline 

no se instalará porque el nombre del archivo está etiquetado con 10.13.

Ahora, por supuesto, la situación podría complicarse un poco más cuando la máquina conectada a Internet o la máquina fuera de línea ejecutan Ubuntu.

¿Hay alguna manera de pedirle a pip una rueda en particular para un sistema operativo objective en particular?

Es la forma estándar de manejar esto para ejecutar ‘pip wheel -w. readline ‘en el sistema operativo para el sistema operativo en el que finalmente se instalará?

¿Es la forma estándar de manejar esto ejecutar ‘pip wheel’ en el sistema operativo para el sistema operativo en el que finalmente se instalará?

Sí. Las personas que liberan paquetes binarios para muchas architectures ejecutan una flota de máquinas virtuales o contenedores con una gran cantidad de architectures de procesador y sistemas operativos emulados.

Para el software libre puede usar niveles gratuitos en los CI comerciales. En Travis CI puede generar ruedas para Linux y Mac OS X, en AppVeyor para w32.

Consulte https://pypi.python.org/pypi/cibuildwheel y https://github.com/matthew-brett/multibuild para ver ejemplos de progtwigs que ayudan a construir ruedas para diferentes plataformas.