1

我使用 Google Cloud SQL 和 MySQL 服务器开发了一些 GO 库。当我导入`appengine/cloudsql,出现以下错误。

cloud.go:20:2: cannot find package "appengine/cloudsql" in any of: /usr/local/Cellar/go/1.1.2/src/pkg/appengine/cloudsql (from $GOROOT) /Users/lameduck/myGo/src/appengine/cloudsql (from $GOPATH)

我知道这个包,appengine/cloudsql仅适用于 Google App Engine,其他任何地方都不存在。

我想知道如何将它用于单个库中的其他环境的 GAE 和标准 sql 库。

PS:我可以正确设置 Google App Engine SDK。我的问题与它无关。我希望我的库可以同时在 Google App Engine 和独立环境中运行。(我已经为 GAE 编写了代码,为其他数据库编写了代码。)用户必须设置一些配置是可以的。但我不希望用户必须修改库源代码。

谢谢你的帮助。

4

2 回答 2

3

我解决了这个问题。我使用构建约束来使用正确的例程并避免错误。App Engine 有一个构建约束appengine

App Engine SDK 引入了一个新的构建约束术语:“appengine”。指定的文件

// +build appengine 将由 App Engine SDK 构建并被 go 工具忽略。相反,指定文件

// +build !appengine 被 App Engine SDK 忽略,而 go 工具会愉快地构建它们。

PS:Anway,我赞成其他答案。谢谢你。

于 2013-11-08T15:54:40.343 回答
1

包导入在编译/链接时完成。与 Python 不同,Go 不支持运行时条件导入。

您正在寻找的功能是动态库加载(如在 C/C++ 中,您可以在运行时加载 .so/.dll),但 Go 目前不支持它

于 2013-11-08T12:42:59.490 回答