2014-01-09 20 views
9

AppEngine SDKをインストールする際、このガイドに従っています。 https://developers.google.com/appengine/docs/go/gettingstarted/introductionGo - パッケージ "appengine"を見つけることができません

私はもともとBREW(OSX上)でGo 1.2をインストールしました。私は私のパスを設定しました:

export GOPATH=$HOME/Documents/go 
export PATH=$GOPATH/bin:$PATH 
export PATH=$HOME/Documents/go/go_appengine:$PATH 

私はコピー/貼り付けハローワールドアプリを、そしてgoapp serveでそれを実行しました。すべての良い。

さて、できるだけ早く私はappengineを使用しようとして:

import (
    "appengine" 
) 

私は時間のコンパイルエラーを取得:

api.go:5:5: cannot find package "appengine" in any of: 
    /usr/local/Cellar/go/1.2/libexec/src/pkg/appengine (from $GOROOT) 
    /Users/jan/Documents/go/src/appengine (from $GOPATH) 

開始ガイドのドキュメントは、このことについては何も言いません。 SDKに/src/pkg/binのような独自の$GOPATHがあるようです。私は手動でSDKとネイティブGoの間で$GOPATHを手動で切り替えなければならないと想定しています。これは意味がなく、私にとってはうまくいきません(私は主にApp Engine以外のもので動作します)。

私は明らかにここで間違っています。私は何が欠けていますか?

EDIT: 実際のappengineサーバーがコンパイルされ、正常に動作しているようですが、セットアップ全体が壊れています(テスト、Vim ...)。回避策はありますか?

+0

Kyle Finleyが提供している[steps](https://stackoverflow.com/questions/11286534/test-cases-for-go-and-appengine)の答えに従ってください。 – alpe1

答えて

7

alpe1によって提供されるように、以下の行がvimのコンパイラを解決するには、を行く:

ln -s $APPENGINE_SDK/goroot/src/pkg/appengine $GOROOT/src/pkg/ 
ln -s $APPENGINE_SDK/goroot/src/pkg/appengine_internal $GOROOT/src/pkg/ 
mkdir -p $GOROOT/src/pkg/code.google.com/p/ 
ln -s $APPENGINE_SDK/goroot/src/pkg/code.google.com/p/goprotobuf 
$GOROOT/src/pkg/code.google.com/p/ 

と私はAppEngineのため自動補完を持っているgocodelib-path(CFオプション)を更新するために必要な:

gocode set lib-path "$APPENGINE_SDK/goroot/pkg/linux_amd64_appengine" 
+0

唯一の問題は、私が使っているサードパーティのライブラリが1.2用にコンパイルされていることと、GAEが1.1.2を使用しているためです。どうすればそれを修正できますか? –

+4

これを行わないでください。通常のGoインストールとGo App Engine SDKを混在させるべきではありません。 – dsymonds

1

あなたが行っているGo App Engine SDKのバージョンは歌う。それがhttps://developers.google.com/appengine/downloads#Google_App_Engine_SDK_for_Goの最新のものであることを確認してください。

抽出されたSDKに変更を加えることなくgoapp serve(またはgoapp buildgoapp testなど)を実行できるはずです。 go_appengineへのパスをPATHに追加するだけで済みます。

通常のGoとApp Engineの両方に1つのGOPATHを割り当てることができます。

エラーメッセージは、GOROOTが/usr/local/Cellar/go/1.2/libexecであることを示しています。それはgoappを呼び出すときでしょうか?それは起こるべきではありません。フルパス$HOME/Documents/go/go_appengine/goappを使用すると何か変更されますか?

+0

あなたは正しいです。これは、[here](https://blog.golang.org/the-app-engine-sdk-and-workspaces-gopath)に記述されているように、バージョン1.7.4ですべて変更されました。 – hyip

2

appengineのテストでは、この問題に関するその他の回答に記載されているテストフレームワークに代わる、"appengine/aetest"を検討してください。

vimについては、別のGOROOTディレクトリ間のシンボリックリンクを避けましょう。それは最悪の種類と種類のバグのためのレシピです:やや不一致のライブラリ依存関係。vimを起動する前に別のGOROOTをエクスポートすることを考えましたか?あなたは別名自明にドロップできます。すべてのsyntasticはない

# You could of course drop this in your .bashrc, .bash_profile, or .zshrc 
$ alias appvim="export GOROOT=$APPENGINE_SDK/goroot && vim" 

は、関連が含まれるため$GOROOT/srcで見ています。 $GOROOTをappengine SDKに変更することで、正しいライブラリを確認します。

0

Christopherの回答に基づいて、gocode$GOROOT/pkgでアーキテクチャに一致するパスを探します(例:$GOROOT/pkg/darwin_amd64)。ただし、AppEngineの設定のコードディレクトリに_appengineという接尾辞が付きます(例:$GOROOT/pkg/darwin_amd64_appengine)。この不一致を修正するには、simlinkを作成します。

export APPENGINE_SDK=/your/appengine/sdk/directory/go_appengine 
ln -s $APPENGINE_SDK/goroot/pkg/your_architecture_appengine $APPENGINE_SDK/goroot/pkg/your_architecture_amd64 

上記のAppEngineのディレクトリとアーキテクチャは、自分で置き換えてください。これを行った後

、GOROOTを変更し、クリストファーは彼のコメントで述べたようにvimの

alias appvim="export GOROOT=$APPENGINE_SDK/goroot && vim" 

を開始するためのエイリアスを作成します。

1

google.golang.orgなどのパッケージに接頭辞を付けます。

"google.golang.org/appengine"

バージョン1.9.35で動作します。

関連する問題