Need help with go-python3?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

DataDog
176 Stars 44 Forks Other 37 Commits 10 Opened issues

Description

Go bindings to the CPython-3 API

Services available

!
?

Need anything else?

Contributors list

go-python3

Currently supports python-3.7 only.

Golang bindings for the C-API of CPython-3.

This package provides a

go
package named "python" under which most of the
PyXYZ
functions and macros of the public C-API of CPython have been exposed. Theoretically, you should be able use https://docs.python.org/3/c-api and know what to type in your
go
program.

This project was inspired by https://github.com/sbinet/go-python. Go and take a look if we need something for python-2.7!

Install

Deps

We will need

pkg-config
and a working
python3.7
environment to build these bindings. Make sure you have Python libraries and header files installed as well (
python3.7-dev
on Debian or
python3-devel
on Centos for example)..

By default

pkg-config
will look at the
python3
library so if you want to choose a specific version just symlink
python-X.Y.pc
to
python3.pc
or use the
PKG_CONFIG_PATH
environment variable.

Go get

Then simply

go get github.com/DataDog/go-python3

API

Some functions mix go code and call to Python function. Those functions will return and

int
and
error
type. The
int
represent the Python result code and the
error
represent any issue from the Go layer.

Example:

func PyRun_AnyFile(filename string)
open
filename
and then call CPython API function
int PyRun_AnyFile(FILE *fp, const char *filename)
.

Therefore its signature is

func PyRun_AnyFile(filename string) (int, error)
, the
int
represent the error code from the CPython
PyRun_AnyFile
function and error will be set if we failed to open
filename
.

If an error is raise before calling th CPython function

int
default to
-1
.

Take a look at some examples

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.