- Notifications
You must be signed in to change notification settings - Fork139
naive go bindings to the CPython2 C-API
License
sbinet/go-python
Folders and files
| Name | Name | Last commit message | Last commit date | |
|---|---|---|---|---|
Repository files navigation
sbinet/go-python only supports CPython2. CPython2 isn't supported anymore bypython.org. Thus,sbinet/go-python is now archived.A possible alternative may be to use and contribute togo-python/cpy3 instead.
Naivego bindings towards the C-API of CPython-2.
this package provides ago package named "python" under which most of thePyXYZ functions and macros of the public C-API of CPython have been exposed.
theoretically, you should be able to just look at:
http://docs.python.org/c-api/index.html
and know what to type in yourgo program.
this package also provides an executable "go-python" which just loads "python" and then callpython.Py_Main(os.Args).the rational being that under such an executable,go based extensions for C-Python would be easier to implement (as this usually means calling intogo fromC through some rather convoluted functions hops)
WithGo 1 and thego tool,cgo packages can't pass anymoreadditionalCGO_CFLAGS from external programs (exceptpkg-config)to the "fake"#cgo preprocessor directive.
go-python now usespkg-config to get the correct location ofheaders and libraries.Unfortunately, the naming convention for thepkg-config package isnot standardised across distributions and OSes, so you may have toedit thecgoflags.go file accordingly.
$ go get github.com/sbinet/go-python
Ifgo get +pkg-config failed:
$cd go-python $ edit cgoflags.go $ make VERBOSE=1Note: you'll need the proper header andpython development environment. On Debian, you'll need to install thepython-all-dev package
Is available ongodocs:
https://godocs.io/github.com/sbinet/go-python
package mainimport"fmt"import"github.com/sbinet/go-python"funcinit() {err:=python.Initialize()iferr!=nil {panic(err.Error()) } }funcmain() {gostr:="foo"pystr:=python.PyString_FromString(gostr)str:=python.PyString_AsString(pystr)fmt.Println("hello [",str,"]")}
$ go run ./main.gohello [ foo ]
fix handling of integers (I did a poor job at making sure everything was ok)
add CPython unit-tests
do not expose
C.FILEpointer and replace it withos.Filein "go-python" APIprovide an easy way to extend go-python with
gobased extensionsthink about the need (or not) to translate CPython exceptions into go panic/recover mechanism
use SWIG to automatically wrap the whole CPython api ?
About
naive go bindings to the CPython2 C-API
Topics
Resources
License
Uh oh!
There was an error while loading.Please reload this page.
Stars
Watchers
Forks
Packages0
Uh oh!
There was an error while loading.Please reload this page.
Contributors11
Uh oh!
There was an error while loading.Please reload this page.