英文:
Why can't I deploy with 'goapp deploy' to GAE, I get can't find import: "github.com/go-sql-driver/mysql"
问题
主要问题:无法使用"goapp deploy"部署到GAE,一直收到以下消息:
src/mygoprog.go:11: 找不到导入: "github.com/go-sql-driver/mysql"
我已经成功部署了一个在端口8080上监听的“hello world”程序到GAE,现在尝试部署一个更复杂的程序。
在本地测试时这个是正常的:
C:\mysql\src>go run mygoprog.go
但是尝试部署到GAE时就不行了:
C:\mysql>goapp deploy
我已经重新安装了goappengine和go语言,并在卸载和安装之间清理了注册表。
任何帮助将不胜感激。
github安装命令:
goapp get github.com/go-sql-driver/mysql
也尝试过
go get github.com/go-sql-driver/mysql
源代码(我尝试过移动它,错误会跟随移动到第11行或第2行或其他位置):
import (
"database/sql"
"io/ioutil"
"encoding/json"
"fmt"
"net/http"
"log"
)
import _ "github.com/go-sql-driver/mysql"
环境:
Python 2.7
Windows 7 - 64位
goappengine sdk版本1.9.1
mercurial 2.9.1
环境变量:
GOPATH=C:\mysql
GOROOT=C:\Go\
app.yml内容:
application: skilled-nation-521
version: 1
runtime: go
api_version: go1
处理程序:
- url: /.*
script: _go_app
这个不起作用:
C:\mysql>goapp deploy
结果:
05:20 PM 应用程序: skilled-nation-521; 版本: 1
05:20 PM 主机: appengine.google.com
05:20 PM
正在更新应用程序: skilled-nation-521, 版本: 1
05:20 PM 获取当前资源限制。
05:20 PM 扫描本地磁盘上的文件。
05:20 PM 克隆23个应用程序文件。
05:20 PM 编译开始。
05:20 PM 编译: 剩余16个文件。
05:20 PM 错误422: --- 服务器输出开始 ---
编译失败:
2014/03/26 15:20:24 go-app-builder: build timing: 2├ù6g (171.487931ms total), 2├gopack (61.001119ms total), 0├ù6l (0 total)
2014/03/26 15:20:24 go-app-builder: failed running 6g: exit status 1
src/mygoprog.go:11: 找不到导入: "github.com/go-sql-driver/mysql"
--- 服务器输出结束 ---
05:20 PM 回滚更新。
错误422: --- 服务器输出开始 ---
--- 服务器输出结束 ---
运行appcfg.py时出错: 退出状态1
c:\mysql的目录结构:
C:\mysql>dir
C盘的卷没有标签。
C盘的序列号是 D2E8-63AC
C:\mysql 的目录
03/26/2014 05:14 PM <DIR> .
03/26/2014 05:14 PM <DIR> ..
03/25/2014 04:17 PM 119 app.yaml
03/26/2014 05:14 PM <DIR> pkg
03/26/2014 05:17 PM <DIR> src
1 个文件 119 字节
4 个目录 20,781,137,920 可用字节
C:\mysql>cd src
C:\mysql\src>dir
C盘的卷没有标签。
C盘的序列号是 D2E8-63AC
C:\mysql\src 的目录
03/26/2014 05:17 PM <DIR> .
03/26/2014 05:17 PM <DIR> ..
03/26/2014 05:14 PM <DIR> github.com
03/26/2014 05:14 PM 2,666 mygoprog.go
1 个文件 2,666 字节
3 个目录 20,781,387,776 可用字节
C:\mysql\src>cd github.com
C:\mysql\src\github.com>dir
C盘的卷没有标签。
C盘的序列号是 D2E8-63AC
C:\mysql\src\github.com 的目录
03/26/2014 05:14 PM <DIR> .
03/26/2014 05:14 PM <DIR> ..
03/26/2014 05:14 PM <DIR> go-sql-driver
0 个文件 0 字节
3 个目录 20,781,387,776 可用字节
英文:
Main problem: can't deploy with 'goapp deploy' to GAE, keep getting this message:
src/mygoprog.go:11: can't find import: "github.com/go-sql-driver/mysql"
I have deployed 'hello world' program that listens on port 8080 to GAE with no problems; now trying to deploy a more sophisticated program.
This works just fine to test locally:
C:\mysql\src>go run mygoprog.go
This does not when trying to deploy to GAE:
C:\mysql>goapp deploy
I've reinstalled goappengine and go language from scratch with cleaned up registry between uninstall and install.
Any help would be appreciated.
github install command(s):
goapp get github.com/go-sql-driver/mysql
also tried
go get github.com/go-sql-driver/mysql
Source code (I've tried moving it around, the error follows the move to line 11 or 2 or whatever):
import (
"database/sql"
"io/ioutil"
"encoding/json"
"fmt"
"net/http"
"log"
)
import _ "github.com/go-sql-driver/mysql"
Environment:
Python 2.7
Windows 7 - 64 bit
goappengine sdk version 1.9.1
mercurial 2.9.1
Environment variables:
GOPATH=C:\mysql
GOROOT=C:\Go\
app.yml contents:
application: skilled-nation-521
version: 1
runtime: go
api_version: go1
handlers:
- url: /.*
script: _go_app
This does not work:
C:\mysql>goapp deploy
Results:
05:20 PM Application: skilled-nation-521; version: 1
05:20 PM Host: appengine.google.com
05:20 PM
Starting update of app: skilled-nation-521, version: 1
05:20 PM Getting current resource limits.
05:20 PM Scanning files on local disk.
05:20 PM Cloning 23 application files.
05:20 PM Compilation starting.
05:20 PM Compilation: 16 files left.
05:20 PM Error 422: --- begin server output ---
Compile failed:
2014/03/26 15:20:24 go-app-builder: build timing: 2├ù6g (171.487931ms total), 2├gopack (61.001119ms total), 0├ù6l (0 total)
2014/03/26 15:20:24 go-app-builder: failed running 6g: exit status 1
src/mygoprog.go:11: can't find import: "github.com/go-sql-driver/mysql"
--- end server output ---
05:20 PM Rolling back the update.
Error 422: --- begin server output ---
--- end server output ---
error while running appcfg.py: exit status 1
Directory structure of c:\mysql:
C:\mysql>dir
Volume in drive C is OS
Volume Serial Number is D2E8-63AC
Directory of C:\mysql
03/26/2014 05:14 PM <DIR> .
03/26/2014 05:14 PM <DIR> ..
03/25/2014 04:17 PM 119 app.yaml
03/26/2014 05:14 PM <DIR> pkg
03/26/2014 05:17 PM <DIR> src
1 File(s) 119 bytes
4 Dir(s) 20,781,137,920 bytes
C:\mysql>cd src
C:\mysql\src>dir
Volume in drive C is OS
Volume Serial Number is D2E8-63AC
Directory of C:\mysql\src
03/26/2014 05:17 PM <DIR> .
03/26/2014 05:17 PM <DIR> ..
03/26/2014 05:14 PM <DIR> github.com
03/26/2014 05:14 PM 2,666 mygoprog.go
1 File(s) 2,666 bytes
3 Dir(s) 20,781,387,776 bytes free
C:\mysql\src>cd github.com
C:\mysql\src\github.com>dir
Volume in drive C is OS
Volume Serial Number is D2E8-63AC
Directory of C:\mysql\src\github.com
03/26/2014 05:14 PM <DIR> .
03/26/2014 05:14 PM <DIR> ..
03/26/2014 05:14 PM <DIR> go-sql-driver
0 File(s) 0 bytes
3 Dir(s) 20,781,387,776 bytes free
</details>
# 答案1
**得分**: 1
导入路径必须从包含 app.yaml 文件的文件夹中起作用。所以你需要将 github.com 文件夹移动到那里。(类似问题:https://stackoverflow.com/questions/7989799/how-to-import-local-golang-package-in-gae)
注意:你不应该使用 go 可执行文件来测试你的 App Engine 代码,应该始终使用 goapp 工具。
<details>
<summary>英文:</summary>
The import path must work from the folder where the app.yaml resides. So you need to move the github.com folder up there. (Similar question: https://stackoverflow.com/questions/7989799/how-to-import-local-golang-package-in-gae)
Note: You should never test your App Engine stuff with the go executable, always use the goapp tool.
</details>
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论