README
This commit is contained in:
32
README.md
32
README.md
@@ -29,7 +29,24 @@ See [github.com/goplus/llgo/c](https://pkg.go.dev/github.com/goplus/llgo/c) for
|
|||||||
|
|
||||||
## Python support
|
## Python support
|
||||||
|
|
||||||
TODO
|
You can load a Python library in llgo! For example:
|
||||||
|
|
||||||
|
```go
|
||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/goplus/llgo/c"
|
||||||
|
"github.com/goplus/llgo/py"
|
||||||
|
"github.com/goplus/llgo/py/math"
|
||||||
|
)
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
x := math.Sqrt(py.Float(2))
|
||||||
|
c.Printf(c.Str("sqrt(2) = %f\n"), x.Float64())
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
Here, We call `py.Float(2)` to create a Python floating point number 2, and pass it to Python’s `math.sqrt` to get `x`. Then use `x.Float64()` to convert the Python object to Go's `float64` type, and finally we print the value through C `printf`.
|
||||||
|
|
||||||
|
|
||||||
## Other frequently used libraries
|
## Other frequently used libraries
|
||||||
@@ -74,11 +91,10 @@ The `_demo` directory contains our demos (it start with `_` to prevent the `go`
|
|||||||
* [genints](_demo/genints/genints.go): various forms of closure usage (including C function, recv.method and anonymous function)
|
* [genints](_demo/genints/genints.go): various forms of closure usage (including C function, recv.method and anonymous function)
|
||||||
* [llama2-c](_demo/llama2-c): inference Llama 2 (It's the first llgo AI example)
|
* [llama2-c](_demo/llama2-c): inference Llama 2 (It's the first llgo AI example)
|
||||||
|
|
||||||
And the `py/_demo` directory contains python related demos:
|
And the `_pydemo` directory contains python related demos:
|
||||||
|
|
||||||
|
* [callpy](_pydemo/callpy/callpy.go): call Python standard library function `math.sqrt`
|
||||||
|
|
||||||
* [hellopy](py/_demo/hellopy/hello.go): link Python to Go and say `Hello world`
|
|
||||||
* [clpy](py/_demo/clpy/cleval.go): compile Python code and eval
|
|
||||||
* [callpy](py/_demo/callpy/call.go): call Python standard library function `math.sqrt`
|
|
||||||
|
|
||||||
### How to run demos
|
### How to run demos
|
||||||
|
|
||||||
@@ -89,7 +105,7 @@ cd <demo-directory> # eg. cd _demo/genints
|
|||||||
llgo run .
|
llgo run .
|
||||||
```
|
```
|
||||||
|
|
||||||
To run the demos in directory `py/_demo`, you need to set the `LLGO_LIB_PYTHON` environment variable first. Assuming you use Python 3.12, and the `libpython3.12.so` (or `libpython3.12.dylib` or `python3.12.lib`) file is in the /foo/bar directory, then you need to set `LLGO_LIB_PYTHON` to:
|
To run the demos in directory `_pydemo`, you need to set the `LLGO_LIB_PYTHON` environment variable first. Assuming you use Python 3.12, and the `libpython3.12.so` (or `libpython3.12.dylib` or `python3.12.lib`) file is in the /foo/bar directory, then you need to set `LLGO_LIB_PYTHON` to:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
export LLGO_LIB_PYTHON=/foo/bar/python3.12
|
export LLGO_LIB_PYTHON=/foo/bar/python3.12
|
||||||
@@ -101,9 +117,9 @@ For example, `/opt/homebrew/Frameworks/Python.framework/Versions/3.12/libpython3
|
|||||||
export LLGO_LIB_PYTHON=/opt/homebrew/Frameworks/Python.framework/Versions/3.12/python3.12
|
export LLGO_LIB_PYTHON=/opt/homebrew/Frameworks/Python.framework/Versions/3.12/python3.12
|
||||||
```
|
```
|
||||||
|
|
||||||
Then you can run the demos in directory `py/_demo`:
|
Then you can run the demos in directory `_pydemo`:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
cd <demo-directory> # eg. cd py/_demo/hellopy
|
cd <demo-directory> # eg. cd _pydemo/callpy
|
||||||
llgo run .
|
llgo run .
|
||||||
```
|
```
|
||||||
|
|||||||
Reference in New Issue
Block a user