No description
This repository has been archived on 2025-06-21. You can view files and clone it, but you cannot make any changes to it's state, such as pushing and creating new issues, pull requests or comments.
Find a file
2019-05-24 01:13:28 +01:00
examples/models heightmap example 2019-05-21 12:12:03 +01:00
raylib Added raylib PYD 2019-05-23 10:38:06 -04:00
.gitignore put binary in git 2019-05-21 12:04:11 +01:00
LICENSE Initial commit 2019-05-21 10:53:59 +01:00
MANIFEST.in release new verison for windows 2019-05-24 01:13:28 +01:00
README.md release new verison for windows 2019-05-24 01:13:28 +01:00
setup.py release new verison for windows 2019-05-24 01:13:28 +01:00
test_dynamic.py nonworking dynamic bindings 2019-05-21 17:51:54 +01:00
test_static.py nonworking dynamic bindings 2019-05-21 17:51:54 +01:00

Python Bindings for Raylib

This uses CFFI API static bindings rather than ctypes. Hopefully this will be faster, the static type knowledge from the C headers will result in fewer bugs, and using the original headers will make it easier to maintain.

Currently the goal is make usage as similar to the original C as CFFI will allow. There are a few differences you can see in the examples. Making a 'Pythonic' library would be an additional layer on top which hasn't been done yet.

See test_static.py and examples/*.py for how to use.

Installing

MacOS: Python 3.7: we distribute a statically linked Raylib library, so in theory the only thing you need to do is install us from Pypi.

pip3 install raylib

Linux: Python 3.6: we dont distribute Raylib, so you must have Raylib 2.5dev already installed on your system. Currently we are building from the github version, specifically f325978b26 although I guess any 2.5 build should work. First follow the instructions here: https://github.com/raysan5/raylib/wiki/Working-on-GNU-Linux Then do:

pip3 install raylib

Windows 10 (64 bit): Python 3.7: we distribute a statically linked Raylib library, thanks to https://github.com/Pebaz, so in theory the only thing you need to do is install us from Pypi.

pip3 install raylib

If you're using a different version of Python, or maybe a Linux/Mac with incompatible libraries you will have to build. The specific version we built against is f325978b26 but we should soon try to synchronize with a proper released version of Raylib.

cd raylib
python3 build_linux.py
python3 build_mac.py

Platforms tested

  • MacOS 10.12.6 - Python 3.7
  • Ubuntu 18.04 LTS - Python 3.6

HELP WANTED

  • converting more examples from C to python
  • testing and building on more platforms

Dynamic bindings

I have attempted to do CFFI ABI dynamic bindings too in order to avoid the need to compile a C extension module, but they don't work properly. They fail in the same place the ctypes binding fails, accessing materials of a model, because Python can't dynamically tell the difference between a pointer and an array. There's probably some way to specify this (e.g. in raylib_modified.h) but it's difficult to be sure we fixed them all because the errors are often completely silent.

See test_dynamic.py for the non-working example.