Skip to content

Latest commit

 

History

History
98 lines (73 loc) · 2.93 KB

README.md

File metadata and controls

98 lines (73 loc) · 2.93 KB

Introduction

This is the documentation page for the Python 3.6+ wrapper of OR-Tools.

This project aim to explain how you build a Python native wheel package using setup.py.

Table of Content

Requirement

You'll need "Python >= 3.6" and few python modules ("wheel" and "absl-py").

Directory Layout

  • setup.py.in Setup.py template to build the python native project.

Build Process

To Create a native dependent package which will contains two parts:

  • A bunch of native libraries for the supported platform targeted.
  • The Python code depending on it.

platform names come from the JNA project (Java Native Access) which will be use to find at runtime on which platform the code is currently running.

Local Package

The pipeline for linux-x86-64 should be as follow:
note: The pipeline will be similar for other architectures, don't hesitate to look at the CI log! Local Pipeline Legend

Building local native Package

Thus we have the C++ shared library libortools.so and the SWIG generated Python wrappers e.g. pywrapsat.py in the same package.

Here some dev-note concerning this setup.py.

  • This package is a native package containing native libraries.

Then you can generate the package and install it locally using:

python3 setup.py bdist_wheel
python3 -m pip install --user --find-links=dist ortools

If everything good the package (located in <buildir>/python/dist) should have this layout:

{...}/dist/ortools-8.0.9999-cp38-cp38-<platform>.whl:
\- ortools
   \- __init__.py
   \- .libs
      \- libortools.so
   \- constraint_solver
      \- __init__.py
      \- pywrapcp.py
      \- _pywrapcp.so
   \- ...
      \- __init__.py
      \- pywrap....py
      \- _pywrap....so
...

note: <platform> could be manylinux2010_x86_64, macosx_10_9_x86_64 or win-amd64.

tips: since wheel package are just zip archive you can use unzip -l <package>.whl to study their layout.

Appendices

Few links on the subject...

Resources

Misc

Image has been generated using plantuml:

plantuml -Tsvg doc/{file}.dot

So you can find the dot source files in doc.