我写了HelloWorld.py
并使用grumpy
我将HelloWorld.py
编译为Go源代码。但运行go build
后,二进制文件没有生成,go build
命令执行成功,没有任何错误,但文件夹中没有找到二进制文件。
这是HelloWorld.py中的代码:
def hello():
print("hello, world")
这是hello.go中生成的代码:
package __main__
import πg "grumpy/build/src/grumpy"
var Code *πg.Code
func init() {
Code = πg.NewCode("<module>", "hello.py", nil, 0, func(πF *πg.Frame, _ []*πg.Object) (*πg.Object, *πg.BaseException) {
var πR *πg.Object; _ = πR
var πE *πg.BaseException; _ = πE
ßhello := πg.InternStr("hello")
var πTemp001 *πg.Object
_ = πTemp001
var πTemp002 []πg.Param
_ = πTemp002
for ; πF.State() >= 0; πF.PopCheckpoint() {
switch πF.State() {
case 0:
default: panic("unexpected function state")
}
// line 1: def hello(): print "hello, world"
πF.SetLineno(1)
πTemp002 = make([]πg.Param, 0)
πTemp001 = πg.NewFunction(πg.NewCode("hello", "hello.py", πTemp002, 0, func(πF *πg.Frame, πArgs []*πg.Object) (*πg.Object, *πg.BaseException) {
var πTemp001 []*πg.Object
_ = πTemp001
var πR *πg.Object; _ = πR
var πE *πg.BaseException; _ = πE
for ; πF.State() >= 0; πF.PopCheckpoint() {
switch πF.State() {
case 0:
default: panic("unexpected function state")
}
// line 1: def hello(): print "hello, world"
πF.SetLineno(1)
πTemp001 = make([]*πg.Object, 1)
πTemp001[0] = πg.NewStr("hello, world").ToObject()
if πE = πg.Print(πF, πTemp001, true); πE != nil {
continue
}
}
if πE != nil {
πR = nil
} else if πR == nil {
πR = πg.None
}
return πR, πE
}), πF.Globals()).ToObject()
if πE = πF.Globals().SetItem(πF, ßhello.ToObject(), πTemp001); πE != nil {
continue
}
}
return nil, πE
})
πg.RegisterModule("__main__", Code)
}
当我尝试将main函数添加到hello.go的末尾并像这样调用init()时:
func main() {
init()
}
我运行go build
can't load package: package .: main.go:1:2: expected 'package', found 'EOF'
答案 0 :(得分:0)
我知道这是一篇旧文章,但是python文件中的以下代码可能有效:
def hello():
print("hello, world")
if __name__ == "__main__":
hello()
现在go将创建其自己的主要功能,并且很可能会起作用。 (免责声明:我自己还没有尝试过)。