1. building only module pip install -r minimal_requirements.txt (or just install numpy and mypy with pip) mypy is required to build pyi - file with stubs for pylance (tips for coding) We need do build shared library from custom.c LINUX: just build custom.so by command: gcc custom.c -shared -o custom.so -I/path/to/python/include -I/path/to/numpy/include WINDOWS: build custom.pyd (the same thing as custom.dll, just renamed) by command: cl.exe custom.c /LD /I "D:/Program Files/Python312/Lib/site-packages/numpy/core/include/numpy" /I "D:/Program Files/Python312/include" /link /LIBPATH:"D:/Program Files/Python312/libs" /out:custom.pyd "D:/Program Files/Python312" - python 3.12 install path CMAKE: Easiest way is to use cmake. Example (from project directory): mkdir build cd buid cmake .. cmake --build . 2. building and installing modules for pip pip install -r requirements.txt buid module (whl): python -m build PATH\TO\DIR\WITH\setup.py install module: pip install .\PATH\TO\whl-file 3. Several ways to use module: - build and install as paragraph 2 - copy .pyd or .so file to module search path (command to find: python -m site) or add directory with .pyd or .so file to PYTHONPATH environment variable .pyi files is required for pylance (vscode tips for coding). To use it set python.analysis.extraPaths in settings.json file to directory containing .pyi file 4. Files description settings_example: example of settings for vscode custom.c: extention code minimal_requirements.txt: requirements for just building extention requirements.txt: requirements to build extention as .whl file to be able to install module with pip setup.py, pyproject.toml: need to build .whl CMakeLists.txt: file for cmake build system test.py: working module example (watch paragraph 3)