Since the official CPython implementation doesn't support building with GCC/Clang on Windows and has its own Windows specific directory layout, we maintain a friendly fork of CPython at https://github.com/msys2-contrib/cpython-mingw/
Some differences/features compared to the official Windows CPython:
- In an active MSYS2 environment
os.altsepare switched to make relative paths more compatible with Unix tools that don't understand Windows paths. Outside of an active MSYS2 environment it behaves normally though.
sys.pathuses the Unix directory layout, see
python -m site
- Virtual environments also work with bash:
python -m venv _venv,
source _venv/bin/activateand so on.
As long as you don't hardcode/assume platform specific values and paths and always use things like
os.sep, do path operations with
pathlib and derive Python installation related paths and configuration from the
sysconfig module then your Python code should work just like with the official Windows CPython installation.
If for some reason you still need to detect our fork you can check for it as follows:
import os import sysconfig if os.name == "nt" and sysconfig.get_platform().startswith("mingw"): print("cpython-mingw detected!")
- C extensions are not compatible with the official CPython, which means pip can't use binary wheels from PyPI and packages have to be build when installing them.
- Some C extensions don't build out of the box since they don't expect non-MSVC on Windows. In some cases we provide patched versions in our repo.
- setuptools >= 60.0 is currently incompatible with MSYS2. You can set
export SETUPTOOLS_USE_DISTUTILS=stdlibto work around the issue. We are currently working on restoring compatibility.
- It still looks up DLLs via PATH and
os.add_dll_directory()doesn't work, see https://github.com/msys2-contrib/cpython-mingw/issues/48