| Windows Native Python Build Instructions | |
| ======================================== | |
| This project uses pybind11 to build Python .pyd extension modules on Windows. | |
| Because Windows installs multiple Python versions, and pybind11 currently only | |
| supports up to Python 3.12, you must follow these steps exactly. | |
| Requirements | |
| ------------ | |
| - Visual Studio Developer Command Prompt (VS C++ Build Tools installed) | |
| - Python 3.12 (pybind11 does NOT support 3.13+ at the time of writing) | |
| - pybind11 installed into Python 3.12 | |
| Check installed Python versions: | |
| py -0 | |
| If Python 3.12 is missing: | |
| winget install Python.Python.3.12 | |
| Install pybind11 for Python 3.12: | |
| py -3.12 -m pip install pybind11 | |
| IMPORTANT: | |
| You must build AND run with the same Python interpreter version (3.12). | |
| Building the .pyd Modules | |
| ------------------------- | |
| Open the "Developer Command Prompt for Visual Studio". | |
| From the project root: | |
| mkdir build_python_win | |
| cd build_python_win | |
| Run CMake using the exact path to python.exe for Python 3.12: | |
| cmake -G "Visual Studio 17 2022" -A x64 -DBASISU_BUILD_PYTHON=ON -DBASISU_BUILD_WASM=OFF -DPYTHON_EXECUTABLE="C:\Users\<YOU>\AppData\Local\Programs\Python\Python312\python.exe" .. | |
| Build: | |
| cmake --build . --config Release | |
| Output files will be created in: | |
| python/basisu_py/basisu_python.pyd | |
| python/basisu_py/basisu_transcoder_python.pyd | |
| Running the Modules | |
| ------------------- | |
| Always run using Python 3.12: | |
| py -3.12 | |
| Inside Python: | |
| import basisu_py | |
| print("Modules loaded OK.") | |
| While in the "python" directory: | |
| py -m tests.test_backend_loading | |
| WASM Backend (Optional) | |
| ----------------------- | |
| Install wasmtime: | |
| py -3.12 -m pip install wasmtime | |
| Ensure these files exist: | |
| python/basisu_py/wasm/*.wasm | |
| Common Problems | |
| --------------- | |
| 1. "pybind11 not found" | |
| -> Installed into wrong Python version. Use: | |
| py -3.12 -m pip install pybind11 | |
| 2. "Python config failure" | |
| -> You are using Python 3.13 or 3.14. Must use Python 3.12. | |
| 3. Modules not loading | |
| -> You must run them with the same interpreter used to build them: | |
| py -3.12 | |