- Notifications
You must be signed in to change notification settings - Fork1
naive go bindings to the CPython C-API
License
go-python/cpy2
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
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=1
Note: you'll need the proper header andpython
development environment. On Debian, you'll need to install thepython-all-dev
package
Is available ongodoc
:
http://godoc.org/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.FILE
pointer and replace it withos.File
in "go-python" APIprovide an easy way to extend go-python with
go
based 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 CPython C-API
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.
Languages
- Go93.1%
- C4.3%
- C++2.1%
- Other0.5%