转1.5+:错误 - 导入运行时:不使用cgo或SWIG时不允许使用C源文件

时间:2015-08-20 10:01:39

标签: c go build compilation

我的程序与1.4.2完美搭配。安装完1.5之后,我收到了以下错误。

  

导入运行时:不使用cgo或时不允许使用C源文件   SWIG:atomic_amd64x.c defs.c float.c heapdump.c lfstack.c malloc.c   mcache.c mcentral.c mem_linux.c mfixalloc.c mgc0.c mheap.c msize.c   os_linux.c panic.c parfor.c proc.c runtime.c signal.c signal_amd64x.c   signal_unix.c stack.c string.c sys_x86.c vdso_linux_amd64.c

错误与程序无关。甚至是一个" Hello world"程序正在抛出相同的错误。

3 个答案:

答案 0 :(得分:52)

  

删除旧的1.4.x go安装,然后安装go 1.5。

安装go 1.5后我遇到了同样的问题。问题是我在1.4.2的同一个地方安装了1.5。 Go 1.5不再使用C,如果存在旧的C安装文件,则会在显示时抛出错误。

如果您希望旧安装也存在,请将1.5安装到其他位置并将GOROOT设置为该位置。

希望它有所帮助。

编辑1:对于Linux用户:

如果您下载了go1.5 * .tar.gz,那么您就这样做了:

  

tar -C / usr / local / -xvf go1.5.linux-amd64.tar.gz

您的旧文件夹C文件未被删除,因此正确的过程是:

首先:您应该删除旧的go文件夹。

  

sudo rm -rf / usr / local / go /

第二:然后运行

  

tar -C / usr / local / -xvf go1.5.x.linux-amd64.tar.gz

答案 1 :(得分:2)

我遇到同样的问题,因为我在我的机器上安装了两个版本的golang,一个来自官方网站,另一个来自自制软件。

GOROOT与go二进制文件不匹配,我只用正确的GOROOT替换GOROOT,然后完成。

from flask import Flask
from flask_restful import Resource, Api
from flask_restful import reqparse
from sqlalchemy import create_engine


e = create_engine("x")

parser = reqparse.RequestParser()
parser.add_argument('cust_country', type = str)
parser.add_argument('cust_name', type = str)

app = Flask(__name__)
api = Api(app)

class Dep(Resource):
    def get(self):
        args = parser.parse_args()
        conn = e.connect()
        query = conn.execute("select cust_id from customers where cust_country = ? and cust_name = ?", [args['cust_country'], args['cust_name']])
        return {'custid': [i[0] for i in query.cursor.fetchall()]}

api.add_resource(Dep, '/customers')

if __name__ == '__main__':
    app.run()

答案 2 :(得分:1)

我在编辑器中遇到过这个问题(sublime text 2)。我打电话给保存的构建,看起来我的编辑器指向1.4.x而不是新安装的1.5。

  • 我通过简单地退出并重新打开我的编辑器来解决这个问题。