pythonocc-core-wheels
Unofficial, pip-installable wheels for pythonocc-core, repackaged from the upstream conda-forge binary, across Linux, macOS, and Windows.
Not affiliated with, endorsed by, or supported by the pythonocc-core or OpenCASCADE (OCCT) maintainers. If you can use conda, use conda-forge directly — that is the maintainer-supported distribution channel and this project exists only to serve environments where conda isn't an option.
Why this exists
pythonocc-core has no PyPI wheels; the only supported install path is conda-forge, because pythonocc-core wraps OpenCASCADE (OCCT), a large C++ CAD kernel that must be compiled and doesn't fit pip's normal "just compile the extension" model. This project doesn't recompile OCCT — it takes the already-built, already-tested conda-forge binary and repackages it into a standard wheel using the platform-appropriate repair tool (auditwheel on Linux, delocate on macOS, delvewheel on Windows), so it can be pip installed in environments without conda.
Status
Experimental, unpublished. Nothing is on PyPI yet. The build pipeline in .github/workflows/build-wheel.yml runs a matrix of Python 3.10–3.14 across Linux, macOS, and Windows, producing a downloadable CI artifact per (OS, Python version) combination so the approach can be validated before committing to a PyPI release.
Done:
- Confirmed the wheel actually imports and runs
OCC.Core.*calls correctly on a clean machine (no conda on PATH, a plain venv) — smoke-tested in CI with a realOCC.Core.BRepPrimAPI_MakeBox(...).Shape()call, on each OS with its own repair tool's output. -
numpydeclared as a runtime dependency (severalOCC.CoreSWIG modules need it at import time). - Wheel is correctly tagged
cpXY-cpXY-<platform>(notpy3-none-any) — the raw build bundles a specific-CPython-ABI native extension, so it needssetup.py'sDistribution.has_ext_modules() = Trueoverride to get setuptools to tag it as version/ABI-specific rather than falsely claiming universal Python 3 compatibility. - Multiple Python versions: 3.10–3.14, matching conda-forge's own
pythonocc-core-feedstocksupport matrix, built in parallel matrix jobs. - Cross-platform matrix: Linux (
auditwheel), macOS (delocate), Windows (delvewheel) — each using the packaging ecosystem's standard tool for bundling a wheel's native shared-library dependencies on that OS.
Done (cont'd):
- Confirmed conda-forge publishes every (OS, Python version) combination in the matrix: all 15 cells (5 Python versions × 3 OSes) installed and built cleanly with no upstream gaps.
- Wheels stripped of debug symbols (
auditwheel repair --stripon Linux; manualstrip -S -xon the bundled OCCT dylibs and stagedOCC/*.soextension modules on macOS, sincedelocate-wheelhas no equivalent flag) and recompressed with LZMA (repaired wheels are DEFLATE; LZMA cuts the Linux wheel from ~109 MB down to ~79 MB — verified installable end-to-end) so every cell fits under PyPI's 100 MB/file limit for new projects. Windows was already under; the unstripped Linux (~117 MB) and macOS (~103 MB) were both over and failed the first real publish attempt outright (see "Releasing" below). ACheck wheel sizeCI step now fails the build early if any wheel is still over 100 MB, rather than only finding out at publish time. - macOS
delocaterepair fixed: GitHub's macos-latest/usr/bin/otoolis a shim that resolves viaxcodebuild -find otool, which the runner SIGKILLs ("Unexpected first line: Killed: 9"). The build now installs conda-forge'scctools(a realotool/install_name_tool) and puts it first on PATH so delocate never touches the broken shim.
Not yet done / to validate:
- An actual first successful publish to PyPI (the first real attempt failed on the size limit above; retrying now that stripping is wired in — see "Releasing" below).
- Whether any
OCC.Corefunctionality beyond basic BRep calls needs OCCT's runtime resource files /CSF_*environment variables that conda's activation scripts normally set up (unverified beyond the smoke test's narrow coverage).
Releasing
Publishing to PyPI happens only on an explicit GitHub Release (never on a plain push or PR, even though those still run the full build/test matrix). Authentication uses PyPI Trusted Publishing (OIDC) — no token is stored anywhere in this repo. The publish job in .github/workflows/build-wheel.yml runs in the pypi GitHub Environment and requires a pending publisher already configured on PyPI (Account settings → Publishing) pointing at this repo, the build-wheel.yml workflow, and the pypi environment.
To cut a release: create a GitHub Release (with a matching tag, e.g. v7.9.3). That triggers the full 15-cell build matrix plus the publish job, which collects every matrix cell's wheel artifact and uploads all of them to PyPI in one pass.
Scope
Only the OCC.Core namespace is packaged (the geometry-kernel bindings). OCC.Display and other visualization-related submodules are intentionally dropped from the wheel to avoid pulling in their much heavier dependency chain (VTK, Qt, etc.), since typical downstream consumers only need OCC.Core.*.
Known limitation: glibc/manylinux tag
The wheel is built on GitHub's ubuntu-latest runner and its actual required platform tag is determined empirically by auditwheel from the linked symbol versions, rather than pinned in advance — an earlier attempt to force manylinux_2_28 failed outright because the runner's glibc/libstdc++ versions are newer than that baseline allows. In practice this currently resolves to manylinux_2_39_x86_64, meaning installing systems need a fairly recent glibc (roughly Ubuntu 24.04+ / Debian 13+ / Fedora 40+ era). Older distros are not supported by this wheel; building inside an actual manylinux Docker container (rather than directly on the runner) would lower this requirement, but hasn't been attempted yet.
Licensing
The build scripts and CI configuration in this repository are MIT licensed (see LICENSE). The redistributed binaries themselves are pythonocc-core / OpenCASCADE (OCCT), both licensed under LGPL-2.1 (with the OCCT public-patent exception) — see the upstream projects for their full license terms. Redistributing these binaries is intended to remain within the terms of that license; this is not legal advice, and this repackaging effort has not been reviewed by a lawyer.
Release files for pythonocc-core-wheels 7.9.3
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Built distributions (wheels)
Total release size: 737.4 MB
Release files / pythonocc_core_wheels-7.9.3-cp314-cp314-win_amd64.whl
| Download URL | pythonocc_core_wheels-7.9.3-cp314-cp314-win_amd64.whl |
|---|---|
| Size | 86.0 MB |
| Tags | CPython 3.14 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
da92b586e902d4554e5be337c447bf1ba4d85214c2d4ee76f64d52f11283611c
|
|
BLAKE2b-256 checksum How to use checksums |
2764243b44543640e04d92abf3777deb2b22235c68f6740eb399ecbba284ba76
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / pythonocc_core_wheels-7.9.3-cp314-cp314-manylinux_2_39_x86_64.whl
| Download URL | pythonocc_core_wheels-7.9.3-cp314-cp314-manylinux_2_39_x86_64.whl |
|---|---|
| Size | 32.1 MB |
| Tags | CPython 3.14 Linux glibc 2.39+ x86-64 |
|
SHA-256 checksum How to use checksums |
fbe8a058ecf5ada94ff005f0c8f9820c7ac285503eac400071ab6c18e2447440
|
|
BLAKE2b-256 checksum How to use checksums |
827456562a6186dd21c2d20a919358dbce5b0f3424d15a5d5dc2acd2033711e1
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / pythonocc_core_wheels-7.9.3-cp314-cp314-macosx_11_0_arm64.whl
| Download URL | pythonocc_core_wheels-7.9.3-cp314-cp314-macosx_11_0_arm64.whl |
|---|---|
| Size | 29.6 MB |
| Tags | CPython 3.14 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
2c3559f1c91e2743170cf3fad3c26a0cf776694e28d926f9e0f0c183f47e4a5f
|
|
BLAKE2b-256 checksum How to use checksums |
51f5adff169f46654839eef0278a636ad84ffc619c9f69aba026feb4618c9d11
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / pythonocc_core_wheels-7.9.3-cp313-cp313-win_amd64.whl
| Download URL | pythonocc_core_wheels-7.9.3-cp313-cp313-win_amd64.whl |
|---|---|
| Size | 85.9 MB |
| Tags | CPython 3.13 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
0c94694023a0e17d362b570e5ca001821aab60341f2301bd848db5118a253061
|
|
BLAKE2b-256 checksum How to use checksums |
7d790254face67b4e1427bd10db3c9f02f2feed5e3cb0150a753eca902e2a644
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / pythonocc_core_wheels-7.9.3-cp313-cp313-manylinux_2_39_x86_64.whl
| Download URL | pythonocc_core_wheels-7.9.3-cp313-cp313-manylinux_2_39_x86_64.whl |
|---|---|
| Size | 32.0 MB |
| Tags | CPython 3.13 Linux glibc 2.39+ x86-64 |
|
SHA-256 checksum How to use checksums |
75360f8603782a1a2058d5eca4357cbf8c0220694642dd25c8341d7e5a6a246a
|
|
BLAKE2b-256 checksum How to use checksums |
d676c3af80e40d10cd68c20cc9e1954b17bdb669a01722ba433c7bc264454e49
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / pythonocc_core_wheels-7.9.3-cp313-cp313-macosx_11_0_arm64.whl
| Download URL | pythonocc_core_wheels-7.9.3-cp313-cp313-macosx_11_0_arm64.whl |
|---|---|
| Size | 29.6 MB |
| Tags | CPython 3.13 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
eeb1c5ab8a645e2866963a4db9d744e9f7740a9d5b7af92facf6c6af62ef9149
|
|
BLAKE2b-256 checksum How to use checksums |
25c45a8c7f4d8fd1ee93f7955ca17be44a7c67f5927f8e5daea6fe0038eb7dec
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / pythonocc_core_wheels-7.9.3-cp312-cp312-win_amd64.whl
| Download URL | pythonocc_core_wheels-7.9.3-cp312-cp312-win_amd64.whl |
|---|---|
| Size | 85.9 MB |
| Tags | CPython 3.12 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
e6a475272445706cdbb629e8070b878590eec6f8cedaa7b50725fdd245f672ff
|
|
BLAKE2b-256 checksum How to use checksums |
c5ca4ba5a2ad7982ada33f92b086ac60b9c83061a363516de4933fddb39eb148
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / pythonocc_core_wheels-7.9.3-cp312-cp312-manylinux_2_39_x86_64.whl
| Download URL | pythonocc_core_wheels-7.9.3-cp312-cp312-manylinux_2_39_x86_64.whl |
|---|---|
| Size | 32.1 MB |
| Tags | CPython 3.12 Linux glibc 2.39+ x86-64 |
|
SHA-256 checksum How to use checksums |
796ed807124cbe4d8d844eafd6215a995ee32c2e64bbae6f8ce883f8274ca8db
|
|
BLAKE2b-256 checksum How to use checksums |
25f18b1833b6ce83482ca5a6315f63c87a95764839432b532d18a2e6c22f396a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / pythonocc_core_wheels-7.9.3-cp312-cp312-macosx_11_0_arm64.whl
| Download URL | pythonocc_core_wheels-7.9.3-cp312-cp312-macosx_11_0_arm64.whl |
|---|---|
| Size | 29.6 MB |
| Tags | CPython 3.12 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
42a425a147e43a65599f9f97b60e643b7a794acc63f9c97c77816c785a21139a
|
|
BLAKE2b-256 checksum How to use checksums |
dd90571c90d2cc269a2391790af6e9eb5f87b17a95829de34f67466bc3502612
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / pythonocc_core_wheels-7.9.3-cp311-cp311-win_amd64.whl
| Download URL | pythonocc_core_wheels-7.9.3-cp311-cp311-win_amd64.whl |
|---|---|
| Size | 85.8 MB |
| Tags | CPython 3.11 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
24fff51e09db2fe718f8d23d8f758b8d9831943e522ff95b7ef16a7f43f73489
|
|
BLAKE2b-256 checksum How to use checksums |
ca501b1be4bcca06f08c68700f56f097cafe41b446b1744e88704696f276650d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / pythonocc_core_wheels-7.9.3-cp311-cp311-manylinux_2_39_x86_64.whl
| Download URL | pythonocc_core_wheels-7.9.3-cp311-cp311-manylinux_2_39_x86_64.whl |
|---|---|
| Size | 32.0 MB |
| Tags | CPython 3.11 Linux glibc 2.39+ x86-64 |
|
SHA-256 checksum How to use checksums |
81da065a03e25f18b6fb6a0436f29a0ce841e83636b2390e90205b3e6cbc4dc4
|
|
BLAKE2b-256 checksum How to use checksums |
ad69f61d880978bc35a44ed9b1efc05dd6be275d42209aee47e6c2fea13f418d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / pythonocc_core_wheels-7.9.3-cp311-cp311-macosx_11_0_arm64.whl
| Download URL | pythonocc_core_wheels-7.9.3-cp311-cp311-macosx_11_0_arm64.whl |
|---|---|
| Size | 29.6 MB |
| Tags | CPython 3.11 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
385483cd0f785fb51045726bb6607fcfb368780963ecd6f28fccba9428c87f4a
|
|
BLAKE2b-256 checksum How to use checksums |
4411451d625a40f1b59a5139f3daf75cd5a0423dc560817fcd80976390200ee0
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / pythonocc_core_wheels-7.9.3-cp310-cp310-win_amd64.whl
| Download URL | pythonocc_core_wheels-7.9.3-cp310-cp310-win_amd64.whl |
|---|---|
| Size | 85.8 MB |
| Tags | CPython 3.10 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
964b4be80e3f1f5e12125317337fb1113349feefc87aab4e21722bc014c45d60
|
|
BLAKE2b-256 checksum How to use checksums |
8b16db19c80e2beaa5e427a7a3ea8124cccd1182733361f60642a8d49c0e8549
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / pythonocc_core_wheels-7.9.3-cp310-cp310-manylinux_2_39_x86_64.whl
| Download URL | pythonocc_core_wheels-7.9.3-cp310-cp310-manylinux_2_39_x86_64.whl |
|---|---|
| Size | 32.0 MB |
| Tags | CPython 3.10 Linux glibc 2.39+ x86-64 |
|
SHA-256 checksum How to use checksums |
7bd24a07409b5a125b2a926b92cce7acf1576f66038f2c17c14010978f2f51cf
|
|
BLAKE2b-256 checksum How to use checksums |
ad3a291709b1bb754c3ab7d350fe0a2e916fe24daa712afb6c44e1525dbb9ce8
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / pythonocc_core_wheels-7.9.3-cp310-cp310-macosx_11_0_arm64.whl
| Download URL | pythonocc_core_wheels-7.9.3-cp310-cp310-macosx_11_0_arm64.whl |
|---|---|
| Size | 29.6 MB |
| Tags | CPython 3.10 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
9f6bbb63e27391302e3745818d82ae09e71032a785504307a50695fcf33c2f28
|
|
BLAKE2b-256 checksum How to use checksums |
744b01c4c327ed0ce054c9954db9f762c415315811dde2f065827a4541efbd75
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|