``cibuildwheel`` ================ :term:`cibuildwheel` vereinfacht die Erstellung von :term:`Python Wheels ` für die verschiedenen Plattformen und Python-Versionen durch Continuous Integration (CI) Workflows. Genauer gesagt baut es Manylinux-, macOS 10.9+- und Windows-Wheels für CPython und PyPy mit GitHub Actions, Azure Pipelines, Travis CI, AppVeyor, CircleCI, oder :doc:`Python4DataScience:productive/git/advanced/gitlab/ci-cd`. Darüber hinaus bündelt es gemeinsam genutzte Bibliotheksabhängigkeiten unter Linux und macOS durch `auditwheel `_ und `delocate `_. Schließlich können die Tests auch gegen die Wheels laufen. .. seealso:: * `Docs `_ * `GitHub `_ .. tab:: GitHub Actions Um Linux-, macOS- und Windows-Wheels erstellen zu können, erstellt eine :file:`.github/workflows/build_wheels.yml`-Datei in eurem GitHub Repo: .. literalinclude:: .github/workflows/build_wheels.yml :caption: .github/workflows/build_wheels.yml :language: yaml :lines: 1-7 ``workflow_dispatch`` ermöglicht euch, in der grafischen Benutzeroberfläche auf eine Schaltfläche zu klicken, um einen Build auszulösen. Das ist perfekt zum manuellen Testen von Wheels vor einer Veröffentlichung eignet, da ihr sie einfach von *artifacts* herunterladen könnt. .. seealso:: * `workflow_dispatch `_ ``release`` wird bei der Übertragung einer getaggten Version ausgeführt. .. seealso:: * `release `_ Nun können die :term:`Wheels ` gebaut werden mit: .. literalinclude:: .github/workflows/build_wheels.yml :language: yaml :lines: 9-22 Dadurch wird der CI-Workflow mit den folgenden Standardeinstellungen ausgeführt: * ``package-dir: .`` * ``output-dir: wheelhouse`` * ``config-file: "{package}/pyproject.toml"`` .. seealso:: * `Workflow syntax for GitHub Actions `_ Schließlich können die :term:`Wheels ` zum :term:`Python Package Index` hochgeladen werden mit: .. literalinclude:: .github/workflows/build_wheels.yml :language: yaml :lines: 24- .. tab:: GitLab CI/CD Um Linux-, macOS- und Windows-Wheels mit :doc:`Python4DataScience:productive/git/advanced/gitlab/ci-cd` zu bauen, erstellt eine :file:`.gitlab-ci.yml`-Datei in eurem :doc:`Git `-Repository: .. literalinclude:: .gitlab-ci.yml :caption: .gitlab-ci.yml :language: yaml .. seealso:: * `Keyword reference for the .gitlab-ci.yml file `_ Optionen -------- ``cibuildwheel`` kann entweder über Umgebungsvariablen oder über eine Konfigurationsdatei wie :file:`pyproject.toml` konfiguriert werden, :abbr:`z.B. (zum Beispiel)`: .. literalinclude:: pyproject.toml :language: toml .. seealso:: * `cibuildwheel: Options `_ Beispiele --------- * Coverage.py: `.github/workflows/kit.yml `_ * matplotlib: `.github/workflows/cibuildwheel.yml `_ * MyPy: `.github/workflows/build.yml `__ * psutil: `.github/workflows/build.yml `__