Golang Cloud SDK - gcloud app deploy 找不到导入包
Golang Cloud SDK - gcloud app deploy cannot find import package
根据 Google App Engine 标准环境 (Go API) 的官方文档,“preferred tooling to deploy a project”现在是 Cloud SDK 所以我们从 goapp 转移到 gcloud。
我们无法将 Go 项目部署到 GAE,因为无法在 "deploy time" 找到每个给定项目的所有子包。
我们为每个 GAE 项目使用的典型文件夹结构如下:
-project-name
--app.yaml
--main.go
--assets
---package1
---package2
当全局库被放入系统 GOPATH 时,一切都运行顺利。
运行 gcloud app deploy
我们现在得到这个:
You are about to deploy the following services:
- yourproject/default/123456789 (from [/Path/to/app.yaml])
Deploying to URL: [https://yourproject.appspot.com]
Do you want to continue (Y/n)? Y
Beginning deployment of service [default]...
ERROR: (gcloud.app.deploy) Staging command [/path/to/yourproject/app.yaml /var/folders/b6/5ydn0wdn64jd32sxzzz48b7c0000gn/T/tmpbd4oiG] failed with return code [1].
------------------------------------ STDOUT ------------------------------------
------------------------------------ STDERR ------------------------------------
2017/03/24 10:25:58 failed analyzing /path/to/yourproject: cannot find package "yourpackage" in any of:
($GOROOT not set)
/path/to/gopath/src/yourpackage (from $GOPATH)
GOPATH: /path/to/gopath
--------------------------------------------------------------------------------
而 dev_appserver.py
可以完美地保持相同的文件夹结构。
我们错过了什么吗?
我们如何使用 gcloud 部署到 Google App Engine 标准环境?
如果需要更改项目结构:如何?有官方文档吗?
提前致谢,
编辑 -- 更多信息:
Luigi-Mac-Pro:path/to/yourproject distudio$ gcloud version
Google Cloud SDK 148.0.0
app-engine-go
app-engine-go-darwin-x86_64 1.9.50
app-engine-python 1.9.50
bq 2.0.24
bq-nix 2.0.24
core 2017.03.17
core-nix 2016.11.07
gcloud
gcloud-deps 2017.03.17
gcloud-deps-darwin-x86_64 2017.02.21
gsutil 4.23
gsutil-nix 4.22
Google 建议将您的依赖项放在应用程序目录之外,并使用 GOPATH
来引用它们。在您的情况下,这意味着执行以下操作:
-project-name
--app.yaml
--main.go
其中 main.go
包含
import (
"package1"
"package2"
)
还有其他地方:
-my_packages
--src
---package1
---package2
然后在 运行 dev_appserver
和 gcloud app deploy
.
之前将 GOPATH
环境变量设置为 path/to/my_packages
为了未来
我们正在制定长期解决方案,以便在您的应用程序目录中正确销售包——可能会使用 Go 未来的本机包管理器。很抱歉,我们没有很好的方法来支持 gcloud app deploy
的子包。这是与 App Engine 柔性环境兼容的不幸副作用。
根据 Google App Engine 标准环境 (Go API) 的官方文档,“preferred tooling to deploy a project”现在是 Cloud SDK 所以我们从 goapp 转移到 gcloud。
我们无法将 Go 项目部署到 GAE,因为无法在 "deploy time" 找到每个给定项目的所有子包。 我们为每个 GAE 项目使用的典型文件夹结构如下:
-project-name
--app.yaml
--main.go
--assets
---package1
---package2
当全局库被放入系统 GOPATH 时,一切都运行顺利。
运行 gcloud app deploy
我们现在得到这个:
You are about to deploy the following services:
- yourproject/default/123456789 (from [/Path/to/app.yaml])
Deploying to URL: [https://yourproject.appspot.com]
Do you want to continue (Y/n)? Y
Beginning deployment of service [default]...
ERROR: (gcloud.app.deploy) Staging command [/path/to/yourproject/app.yaml /var/folders/b6/5ydn0wdn64jd32sxzzz48b7c0000gn/T/tmpbd4oiG] failed with return code [1].
------------------------------------ STDOUT ------------------------------------
------------------------------------ STDERR ------------------------------------
2017/03/24 10:25:58 failed analyzing /path/to/yourproject: cannot find package "yourpackage" in any of:
($GOROOT not set)
/path/to/gopath/src/yourpackage (from $GOPATH)
GOPATH: /path/to/gopath
--------------------------------------------------------------------------------
而 dev_appserver.py
可以完美地保持相同的文件夹结构。
我们错过了什么吗? 我们如何使用 gcloud 部署到 Google App Engine 标准环境?
如果需要更改项目结构:如何?有官方文档吗?
提前致谢,
编辑 -- 更多信息:
Luigi-Mac-Pro:path/to/yourproject distudio$ gcloud version
Google Cloud SDK 148.0.0
app-engine-go
app-engine-go-darwin-x86_64 1.9.50
app-engine-python 1.9.50
bq 2.0.24
bq-nix 2.0.24
core 2017.03.17
core-nix 2016.11.07
gcloud
gcloud-deps 2017.03.17
gcloud-deps-darwin-x86_64 2017.02.21
gsutil 4.23
gsutil-nix 4.22
Google 建议将您的依赖项放在应用程序目录之外,并使用 GOPATH
来引用它们。在您的情况下,这意味着执行以下操作:
-project-name
--app.yaml
--main.go
其中 main.go
包含
import (
"package1"
"package2"
)
还有其他地方:
-my_packages
--src
---package1
---package2
然后在 运行 dev_appserver
和 gcloud app deploy
.
GOPATH
环境变量设置为 path/to/my_packages
为了未来
我们正在制定长期解决方案,以便在您的应用程序目录中正确销售包——可能会使用 Go 未来的本机包管理器。很抱歉,我们没有很好的方法来支持 gcloud app deploy
的子包。这是与 App Engine 柔性环境兼容的不幸副作用。