【GAE/Go】 'ImportError: cannot import name goroots' の対処
こんにちは。
GAE/Go開発している最中にふとappengine sdkのアップデートをしました。
$ gcloud components update
これでappengine sdk含め諸々のアップデートがなされたわけですが、この直後から goapp コマンドでエラーが出るようになりました。
➜ goapp Traceback (most recent call last): File "/Users/shimbaroid/google-cloud-sdk/platform/google_appengine/goapp", line 13, in <module> from google.appengine.tools import goroots ImportError: cannot import name goroots
goroots
なるパッケージのimportに失敗しているようです。
このスクリプト(goapp)、pythonで書かれているので「pythonのパッケージいれればいいのかな」なんて思いましたが面倒くさそうなので避けました。pythonやったことないワカンナイ。
今回インストールされたappengineのバージョンは1.9.53でした。アップデート前のバージョンはわからないです…
➜ goapp version go version 1.6.3 (appengine-1.9.53) darwin/amd64
対処
件のgoroots
は$GOROOTを取得するためのもののようですが、別のマシンに入っている古いバージョンのgoapp
を確認したところ、goroots
を使わずに$GOROOTを取得していました。
これに倣って手元のマシンのgoappを書き換えてしまいます。
- from google.appengine.tools import goroots SDK_BASE = os.path.abspath(os.path.dirname(os.path.realpath(__file__))) - GOROOT = os.path.join(SDK_BASE, goroots.GOROOTS['go1']) + GOROOT = os.path.join(SDK_BASE, 'goroot')
古いマシンのappengineのバージョンは1.9.50でした。