Saturday 2:35 p.m.–3:05 p.m.
Build and test wheel packages on Linux, OSX & Windows
- Audience level:
Practical guide to build and test wheel packages for all platforms using free Continuous Integration services such as Travis CI (Linux and OSX) and AppVeyor (Windows).
[Wheels](https://pypi.python.org/pypi/wheel) are the new [standard](http://legacy.python.org/dev/peps/pep-0427/) of python distribution and are intended to replace eggs. Support is offered in pip >= 1.4 and setuptools >= 0.8. The wheel format is now the recommended way to ship Python packages on PyPI. Wheels make it possible to very quickly install Python packages on all supported platforms. Packages with compiled extensions can be packaged as platform specific wheels (e.g. 32 bit Windows) so that users do not need a compiler or any other developer tool to `pip install` them. As part as my involvement as release manager for the [scikit-learn](http://scikit-learn.org) project I have spent time and effort to setup an automated CI infrastructure that generates and tests wheel packages for all our supported platforms (Windows, OSX and Linux). This setup makes it possible to support all recent Python versions (2.6+ and 3.3+), both on 32 bit and 64 bit architectures. The goal of this talk is to share the experience and tools I used or developed along this journey. In particular this talk will cover: - how to configure Travis CI to build and test wheel packages for Linux and OSX, - how to configure AppVeyor CI to build and test wheel packages for Windows, - how to embed third party dynamic libraries (`.dylib` or `.dll`) in a wheel package on OSX and Windows to make it independent of non-Python dependencies, - how to setup 32 bit and 64 bit C/C++ and fortran compilers under Windows, - how to maintain a project specific wheelhouse using a public cloud container such as Amazon S3, Rackspace Cloud Files, Microsoft Azure Blobs or Google Storage. - how to automate PyPI releases to upload the artifacts generated by CI workers for a specific tag of your project. Hopefully by the end of this talk you will have all the necessary pointers and tools to help the [Python community build wheel packages](http://pythonwheels.com) for all the projects and all the platforms.