ATOM+go-plus+project managerでプロジェクト別のGOPATH,GOBIN設定
解決済
回答 1
投稿
- 評価
- クリップ 0
- VIEW 1,580
前提・実現したいこと
macOSでGo 1.7
+ATOMエディタ
+go-plus
+project-manager
を使い、
Go開発を行う際、プロジェクト別にGOPATH, GOBIN, PATHを設定したい。
記載のものは全てインストール済だが、どうにもProject別にGOPATH、GOBINの変更ができない状態。
ATOMエディタで$HOME/godev/projectA/
の中では、環境変数を次のようにしたい。
export GOPATH=/home/moonphase/go:/home/moonphase/godev/projectA/go
export GOBIN=/home/moonphase/go/bin:/home/moonphase/godev/projectA/go/bin
export PATH=...(内容省略):/home/moonphase/go/bin:/home/moonphase/godev/projectA/go/bin
$HOME/godev/projectB/
の中では、環境変数を次のようにしたい。
export GOPATH=/home/moonphase/go:/home/moonphase/godev/projectB/go
export GOBIN=/home/moonphase/go/bin:/home/moonphase/godev/projectB/go/bin
export PATH=...(内容省略):/home/moonphase/go/bin:/home/moonphase/godev/projectB/go/bin
その他実現したいこと詳細
ATOMプラグイン、project-manager
を利用して、script
やatom-runner
でそれぞれプロジェクト別にgo run
した時に上記環境変数が効いている状態にしたい。
ATOMエディタでは projectA
、projectB
を開いている。それぞれを行ったり来たりするが、そのタイミングで切り替えたい。
具体的な操作と期待する動作
projectA/main.go
を開いたタイミングで先に書いたprojectA用の環境変数が設定され、go run
できること。
そのままprojectB/main.go
を開くと、先に書いたprojectB用の環境変数が設定され、go run
できること。
現在のGo言語開発環境のディレクトリ構成
$HOME/godev/projectA/
+- go/
+- bin/
$HOME/godev/projectB/
+- go/
+- bin/
現在の$HOME/.bash_profile
の内容
export GOPATH=$HOME/go
export GOBIN=$GOPATH/bin
export PATH=$PATH:$GOPATH/bin
試したこと
1. ATOMプラグインatomenv
でやってみたこと
ATOMプラグインatomenv
はATOMコマンドatomenv:load
を実行してもプロジェクト配下の.atomenv.cson
を読み込んでくれない。
2. ATOMプラグインenv-from-shell
でやってみたこと
env-from-shell
の設定でVariables
にPATH, GOPATH, GOBIN
を指定。
projectAを開いた状態でenv-from-shell:copy
を実行しても環境変数は設定されない。
3. ATOMプラグイン000-project-shell-env
でやってみたこと
projectA
の環境変数は設定されたが、プロジェクトをprojectB
に切り替えても環境変数に変更なし。また、$HOME/.atom/project.cson
からprojectA
の設定を消しても毎回なぜかprojectA
, projectB
がATOM上に表示される。
projectA
のフォルダを削除すると、勝手に一つ上のディレクトリgodev
がプロジェクトに表示された。
どこかにprojectA
の設定が残ってる?
それとも自動でプロジェクトが読み込まれてる?
動作が謎。
一旦全てのプロジェクト情報を削除し、ATOMエディタを再起動。
projectA
だけが見える状態で、ここからプロジェクトを開くでProjectB
を開くと新しいATOMの画面が起動し、projectB
の環境変数と共に起動。
元々のprojectA
も期待する環境変数となっている。
複数のプロジェクトが設定されている状態でこのプラグインを使うと予期しない動作になるのか?
少しやりたいことに近づいたが、一つのATOMウインドウで環境変数を切り替えることはできないのか・・・
その他補足情報
direnv
を導入済で、bashで cd $HOME/godev/projectA
すると期待する環境変数が設定されている。
一番連携したいのはdirenv
direnv
と連携できるならそれが設定が集約できるので一番望ましいが設定方法が不明。
似たような解決方法でもいいのでアドバイスいただけますか。
-
気になる質問をクリップする
クリップした質問は、後からいつでもマイページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
クリップを取り消します
-
良い質問の評価を上げる
以下のような質問は評価を上げましょう
- 質問内容が明確
- 自分も答えを知りたい
- 質問者以外のユーザにも役立つ
評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。
質問の評価を上げたことを取り消します
-
評価を下げられる数の上限に達しました
評価を下げることができません
- 1日5回まで評価を下げられます
- 1日に1ユーザに対して2回まで評価を下げられます
質問の評価を下げる
teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。
- プログラミングに関係のない質問
- やってほしいことだけを記載した丸投げの質問
- 問題・課題が含まれていない質問
- 意図的に内容が抹消された質問
- 過去に投稿した質問と同じ内容の質問
- 広告と受け取られるような投稿
評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。
質問の評価を下げたことを取り消します
この機能は開放されていません
評価を下げる条件を満たしてません
質問の評価を下げる機能の利用条件
この機能を利用するためには、以下の事項を行う必要があります。
- 質問回答など一定の行動
-
メールアドレスの認証
メールアドレスの認証
-
質問評価に関するヘルプページの閲覧
質問評価に関するヘルプページの閲覧
check解決した方法
0
3. ATOMプラグイン
000-project-shell-env
でやってみたこと
これもなんだか不安定、ATOMを起動したタイミングでプロジェクトが開いても、環境変数が設定されていない場合がある。
その後色々格闘したり調べたり、ある程度見えてきた。
結論:一つのATOMウインドウで複数のプロジェクト毎の環境変数は扱えない
.bashrcの設定
これがいいっぽい。GOBINは設定するのやめた。
export GOPATH=$HOME/go
export PATH=$PATH:$GOPATH/bin
projectAの設定
$ cd $HOME/godev/projectA
$ direnv edit .
以下の内容にする
export GOPATH=$PWD:$GOPATH
export PATH=$PWD/bin:$PATH
projectBの設定
$ cd $HOME/godev/projectB
$ direnv edit .
以下の内容にする
export GOPATH=$PWD:$GOPATH
export PATH=$PWD/bin:$PATH
projectA
とprojectB
を開く(それぞれ別窓)
以下のように実行することで、カレントをプロジェクトとしてATOMを起動する。
$ cd $HOME/godev/projectA
$ atom .
$ cd $HOME/godev/projectB
$ atom .
これでそれぞれのATOMで別環境変数が設定されて動作する。
一旦これで良しとします。
投稿
-
回答の評価を上げる
以下のような回答は評価を上げましょう
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
15分調べてもわからないことは、teratailで質問しよう!
- ただいまの回答率 88.20%
- 質問をまとめることで、思考を整理して素早く解決
- テンプレート機能で、簡単に質問をまとめられる