python - 信号 SIGSEGV:当我使用 go-python3 时,分段违规代码 = 0x1
问题描述
当我尝试执行我的代码两次时出现错误“分段违规”并且我没有更多的想法来解决这个问题......:/
func (a *MyActivity) Eval(context activity.Context) (done bool, err error) {
pinString := context.GetInput("input1").(string)
// string to int
pinInt, _ := strconv.Atoi(pinString)
//defer python3.Py_Finalize()
python3.Py_Finalize()
python3.Py_Initialize()
if !python3.Py_IsInitialized() {
fmt.Println("Error initializing the python interpreter")
os.Exit(1)
}
dir, err := filepath.Abs(filepath.Dir("./"))
if err != nil {
//log.Fatal(err)
fmt.Println(err)
}
ret := python3.PyRun_SimpleString("import sys\nsys.path.append(\"" + dir + "\")")
if ret != 0 {
//log.Fatalf("error appending '%s' to python sys.path", dir)
fmt.Println("error appending to python sys.path" + dir)
}
// Here is the problem \\
oImport = python3.PyImport_ImportModule("detect") //ret val: new ref
if !(oImport != nil && python3.PyErr_Occurred() == nil) {
python3.PyErr_Print()
//log.Fatal("failed to import module 'detect'")
fmt.Println("failed to import module 'detect'")
}
// Here is the problem \\
.
.
.
.
}
我尝试了很多东西,但我无法解决问题,使用库 go-python3 对我来说是新的
非常感谢你的帮助 :)
解决方案
在我的函数 Eval 之前,我用 Golang 中的函数 init() 解决了这个问题。我将所有导入以及 python3.Py_Finalize() 和 python3.Py_Initialize() 放入 init() 函数中,它对我有用:)
推荐阅读
- javascript - Solidity 0.8.0 中的 ParserError
- pine-script - 这个 pinescript 语句的含义是什么?
- java - 在 Spring 中动态删除 @EventListener
- twilio - Twilio - 带有 DTMF 音调的媒体流
- ietf-netmod-yang - 仅允许 YANG 模型中单独列表中的唯一键
- java - 如果找到匹配项,如何从列表中提取项目并添加到新列表中?
- sql - 优化查询,检查 user_id 是否存在于许多表中
- javascript - 如何在每个步骤中组合带有条件检查的 JS 函数?
- python - 有非接触式温度计的协议文件吗?
- swift - (WatchConnectivity) WCSession 缺少委托