質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Go

Go(golang)は、Googleで開発されたオープンソースのプログラミング言語です。

Q&A

解決済

1回答

2163閲覧

ATOM+go-plus+project managerでプロジェクト別のGOPATH,GOBIN設定

moonphase

総合スコア6621

Go

Go(golang)は、Googleで開発されたオープンソースのプログラミング言語です。

0グッド

0クリップ

投稿2016/11/17 09:30

###前提・実現したいこと
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を利用して、scriptatom-runnerでそれぞれプロジェクト別にgo runした時に上記環境変数が効いている状態にしたい。
ATOMエディタでは projectAprojectBを開いている。それぞれを行ったり来たりするが、そのタイミングで切り替えたい。

具体的な操作と期待する動作

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の設定でVariablesPATH, 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と連携できるならそれが設定が集約できるので一番望ましいが設定方法が不明。

似たような解決方法でもいいのでアドバイスいただけますか。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

  1. 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

projectAprojectBを開く(それぞれ別窓)

以下のように実行することで、カレントをプロジェクトとしてATOMを起動する。

$ cd $HOME/godev/projectA $ atom . $ cd $HOME/godev/projectB $ atom .

これでそれぞれのATOMで別環境変数が設定されて動作する。

一旦これで良しとします。

投稿2016/11/17 14:58

編集2016/11/17 15:48
moonphase

総合スコア6621

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問