【问题标题】:cannot find package "appengine/cloudsql"找不到包“app engine/cloud sql”
【发布时间】:2013-11-10 09:45:01
【问题描述】:

我使用 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 编写了代码,为其他数据库编写了代码。)用户必须设置一些配置是可以的。但我不希望用户必须修改库源代码。

感谢您的帮助。

【问题讨论】:

  • 看看developers.google.com/appengine/docs/go/gettingstarted/… 。看起来可能没有安装 Go AppEngine SDK。
  • developers.google.com/appengine/docs/go/cloud-sql/… 上还有一个关于“在开发过程中使用本地 MySQL 实例”的链接(但没有内容),所以我想说这正在处理中。
  • 感谢@Intermernet。但我的问题与设置 GAE SDK 无关。我正在开发一个使用 Google Cloud SQL 或标准 SQL 服务器的库。如果该库在 Google App Engine 上运行,则它可以正常运行。否则,发生错误。我想知道如何隔离 GAE 代码和其他东西以避免该错误。
  • @Intermernet,不幸的是,“在开发过程中使用本地 MySQL 实例”不是由 Google 编写的。
  • 我不认为这可以在单个库中完成,但在两个库中完成会相当容易。阅读您对@mjibson 的回复,您似乎已经通过将数据库代码分离到不同的包中来做正确的事情。据我所知,您无法在 GAE 或独立环境之外成功导入 GAE 包。

标签: google-app-engine go


【解决方案1】:

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

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

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

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

PS: 无论如何,我赞成其他答案。谢谢。

【讨论】:

    【解决方案2】:

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

    您正在寻找的功能是动态库加载(如在 C/C++ 中,您可以在运行时加载 .so/.dll),但目前 Go 为 doesn't support it

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-06-07
      • 2015-01-12
      • 2018-09-07
      • 2013-06-06
      • 2014-01-20
      • 2021-08-04
      • 1970-01-01
      相关资源
      最近更新 更多