在 Python 代码中无法导入某些 Python 模块库(例如 json),然后在 Go 代码中调用这些模块库
我的 Python 代码如下:
Python
def feature1(inputJsonString):
print inputJsonString
import json
import sys
print json.dumps(1)
return sys.version
而 go main 代码如下:
package main
import ... // 我已经导入了 "$GOPATH/src/python" 下的所有包,因此 "json" 相关的库都应该被导入
func main() {
f := grumpy.NewRootFrame()
mods, _ := grumpy.ImportModule(f, "feature1")
fmt.Printf("mods: %v\n", mods)
feature1, _ := grumpy.GetAttr(f, mods[0], grumpy.NewStr("feature1"), nil)
args := f.MakeArgs(1)
args[0] = grumpy.NewStr({"a": 1, "b": "I am string"}).ToObject()
result, err := feature1.Call(f, args, nil)
fmt.Printf("result type: %v\n", reflect.TypeOf(result))
fmt.Printf("result: %v\n", result.String())
fmt.Printf("err: %v\n", err)
当我尝试运行 go main 代码时,我得到的结果如下:
result: nil
err: TypeError('bad operand type for unary -: 'tuple'',)
我发现这个错误是由生成的 go 代码 feature1.go 中的 grumpy.ImportModule 函数引起的,但我不清楚这个错误是如何引发的。此外,当我尝试导入其他 Python 标准库(如 "sys")时,一切都正常运行。
我的 Golang 版本是 go1.10.3 darwin/amd64。
内容来源: google/grumpy