Невозможно загрузить, $GOPATH не установлен
Я хочу установить json2csv с помощью go get github.com/jehiah/json2csv
, но я получаю эту ошибку:
package github.com/jehiah/json2csv: cannot download, $GOPATH not set. For more details see: go help go path
Любая помощь в том, как исправить это на MacOS?
Ответы
Ответ 1
[Обновить: по состоянию на 1.8, GOPATH
по умолчанию используется $HOME/go
, но вы все равно можете найти это полезным, если хотите понять макет GOPATH
, настроить его и т.д.]
Официальный сайт Go обсуждает GOPATH и как выложить каталог рабочей области.
export GOPATH="$HOME/your-workspace-dir/"
- запустите его в своей оболочке, затем добавьте его в ~/.bashrc
или эквивалент, чтобы он был настроен для вас в будущем. Go будет устанавливать пакеты под src/
, bin/
и pkg/
, подкаталогами там. Вы захотите разместить свои собственные пакеты где-нибудь под $GOPATH/src
, например $GOPATH/src/github.com/myusername/
, если вы хотите опубликовать его в GitHub. Вероятно, вы также захотите export PATH=$PATH:$GOPATH/bin
в .bashrc
, чтобы вы могли запускать скомпилированные программы в $GOPATH
.
Необязательно через Rob Pike, вы также можете установить CDPATH
, чтобы быстрее cd
упаковать dirs в bash: export CDPATH=.:$GOPATH/src/github.com:$GOPATH/src/golang.org/x
означает, что вы можете просто ввести cd net/html
вместо cd $GOPATH/src/golang.org/x/net/html
.
Keith Rarick примечания вы можете установить GOPATH=$HOME
, чтобы поставить каталоги Go src/
, pkg/
и bin/
прямо под ваш homedir, Это может быть хорошо (например, у вас уже может быть $HOME/bin
на вашем пути), но, конечно, некоторые люди используют несколько рабочих областей и т.д.
Ответ 2
Я много раз пробовал ада.
Это работало
Настройка среды разработки Go на Ubuntu и как исправить $GOPATH/$GOROOT
Шаги
mkdir ~/go
Установите $GOPATH в .bashrc,
export GOPATH=~/go
export PATH=$PATH:$GOPATH/bin
Ответ 3
Использование brew
Я установил его с помощью brew
.
$ brew install go
Когда это было сделано, если вы запустите эту команду brew, она отобразит следующую информацию:
$ brew info go
go: stable 1.4.2 (bottled), HEAD
Go programming environment
https://golang.org
/usr/local/Cellar/go/1.4.2 (4676 files, 158M) *
Poured from bottle
From: https://github.com/Homebrew/homebrew/blob/master/Library/Formula/go.rb
==> Options
--with-cc-all
Build with cross-compilers and runtime support for all supported platforms
--with-cc-common
Build with cross-compilers and runtime support for darwin, linux and windows
--without-cgo
Build without cgo
--without-godoc
godoc will not be installed for you
--without-vet
vet will not be installed for you
--HEAD
Install HEAD version
==> Caveats
As of go 1.2, a valid GOPATH is required to use the `go get` command:
https://golang.org/doc/code.html#GOPATH
You may wish to add the GOROOT-based install location to your PATH:
export PATH=$PATH:/usr/local/opt/go/libexec/bin
Важными частями являются следующие строки:
/usr/local/Cellar/go/1.4.2 (4676 файлов, 158M) *
export PATH = $PATH:/usr/local/opt/go/libexec/bin
Настройка среды GO
Это показывает, где был установлен GO. Для настройки среды GO нам нужно сделать следующее:
$ export PATH=$PATH:/usr/local/opt/go/libexec/bin
$ export GOPATH=/usr/local/opt/go/bin
Затем вы можете проверить с помощью GO, правильно ли он настроен:
$ go env
GOARCH="amd64"
GOBIN=""
GOCHAR="6"
GOEXE=""
GOHOSTARCH="amd64"
GOHOSTOS="darwin"
GOOS="darwin"
GOPATH="/usr/local/opt/go/bin"
GORACE=""
GOROOT="/usr/local/Cellar/go/1.4.2/libexec"
GOTOOLDIR="/usr/local/Cellar/go/1.4.2/libexec/pkg/tool/darwin_amd64"
CC="clang"
GOGCCFLAGS="-fPIC -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fno-common"
CXX="clang++"
CGO_ENABLED="1"
Настройка json2csv
Выглядит хорошо, поэтому установите json2csv
:
$ go get github.com/jehiah/json2csv
$
Что только что произошло? Он установил его. Вы можете проверить следующее:
$ $ ls -l $GOPATH/bin
total 5248
-rwxr-xr-x 1 sammingolelli staff 2686320 Jun 9 12:28 json2csv
ОК, так почему я не могу ввести json2csv
в свою оболочку? Это потому, что каталог /bin
в $GOPATH
не находится на вашем $PATH
.
$ type -f json2csv
-bash: type: json2csv: not found
Итак, давайте временно добавим его:
$ export PATH=$GOPATH/bin:$PATH
И перепроверьте:
$ type -f json2csv
json2csv is hashed (/usr/local/opt/go/bin/bin/json2csv)
Теперь он есть:
$ json2csv --help
Usage of json2csv:
-d=",": delimiter used for output values
-i="": /path/to/input.json (optional; default is stdin)
-k=[]: fields to output
-o="": /path/to/output.json (optional; default is stdout)
-p=false: prints header to output
-v=false: verbose output (to stderr)
-version=false: print version string
Добавьте внесенные изменения в $PATH
и $GOPATH
к вашему $HOME/.bash_profile
, чтобы они сохранялись между перезагрузками.
Ответ 4
Смотреть видео
В общем, я всегда рекомендую это официальное видео с Go, чтобы получить краткий обзор по этому вопросу:
http://www.youtube.com/watch?v=XCsL89YtqCs
Проще показаться, чем быть сказанным.
@jwfearn перефразировал важную часть видео:
export GOPATH="${HOME}/gocode"; export PATH="${PATH}:${GOPATH}/bin"; mkdir -p "${GOPATH}"
Ответ 5
Просто сделайте export GOPATH="/whatever/you/like/your/GOPATH/to/be"
.
Ответ 6
Для MAC это сработало для меня.
sudo nano /etc/bashrc
и добавьте ниже в конце файла
export PATH=$PATH:/usr/local/opt/go/libexec/bin
export GOPATH=/usr/local/opt/go/bin
Это должно устранить проблему. Попробуйте открыть новый терминал и эхо $GOPATH вы должны увидеть правильное значение.
Ответ 7
Мне было проще сделать это вот так:
export GOROOT=$HOME/go
export GOPATH=$GOROOT/bin
export PATH=$PATH:$GOPATH
Ответ 8
(для MAC)
Я пробовал все эти ответы и, по какой-то еще неизвестной причине, никто из них не работал.
Мне пришлось "принудительно подавать" GOPATH, установив переменную окружения для каждой команды, которая ему нужна. Например:
sudo env GOPATH=$HOME/goWorkDirectory go build ...
Даже glide
давал мне ошибку GOPATH not set
. Решено еще раз "силой кормить": Я пробовал все эти ответы и, по какой-то еще неизвестной причине, никто из них не работал.
Мне пришлось "принудительно подавать" GOPATH, установив переменную окружения для каждой команды, которая ему нужна.
sudo env GOPATH=$HOME/goWorkDirectory glide install
Надеюсь, это поможет кому-то.
Ответ 9
Если вы столкнулись с этой проблемой после настройки $GOPATH
, это может быть связано с тем, что вы запускаете ее с неподдерживаемой оболочкой. Я использовал fish
, и он не работал, запуск его с помощью bash
работал нормально.
Ответ 10
Ваш $GOROOT
не должен быть настроен.
Вы $GOPATH
должны быть установлены на $HOME/go
, набрав export $GOPATH=$HOME/go
Введите export GOROOT=""
, чтобы исправить вашу проблему.
Ответ 11
Вы можете использовать "экспорт", как и другие ребята. Я хотел бы предоставить вам другое решение для постоянного удобства: вы можете использовать любой путь как GOPATH при запуске команд Go.
Во-первых, вам нужно загрузить небольшой инструмент с именем gost
: https://github.com/byte16/gost/releases. Если вы используете ubuntu, вы можете загрузить версию Linux (https://github.com/byte16/gost/releases/download/v0.1.0/gost_linux_amd64.tar.gz).
Затем вам нужно запустить приведенные ниже команды, чтобы распаковать его:
$ cd /path/to/your/download/directory
$ tar -xvf gost_linux_amd64.tar.gz
Вы получите исполняемый файл gost
. Вы можете переместить его на /usr/local/bin
для удобного использования:
$ sudo mv gost /usr/local/bin
Выполните приведенную ниже команду, чтобы добавить путь, который хотите использовать в качестве GOPATH, в pathspace gost
. Он должен указать путь, который вы будете использовать позже.
$ gost add foo /home/foobar/bar # 'foo' is the name and '/home/foobar/bar' is the path
Запустите любую команду Go, которую вы хотите в формате:
gost goCommand [-p {pathName}] -- [goFlags...] [goArgs...]
Например, вы хотите запустить go get github.com/go-sql-driver/mysql
с /home/foobar/bar
как GOPATH, просто выполните это, как показано ниже:
$ gost get -p foo -- github.com/go-sql-driver/mysql # 'foo' is the name you give to the path above.
Это поможет вам установить GOPATH и запустить команду. Но помните, что вы добавили путь в gost
pathspace. Если вы находитесь под любым уровнем подкаталогов /home/foobar/bar
, вы даже можете просто запустить приведенную ниже команду, которая будет делать то же самое для краткости:
$ gost get -- github.com/go-sql-driver/mysql
gost
- это простой инструмент Go, который поможет вам управлять GOPATH и запускать команды Go. Подробнее о том, как использовать его для запуска других команд Go, можно просто запустить gost help goCmdName
. Например, вы хотите узнать больше о install
, просто введите слова ниже:
$ gost help install
Вы также можете найти более подробную информацию в README проекта: https://github.com/byte16/gost/blob/master/README.md
Ответ 12
Мне нужно было запустить приложение как root (чтобы открыть веб-сервер на порту 80), это вызвало ошибку для меня, потому что пользователь sudo имеет другую среду, отличную от обычного пользователя, поэтому GOPATH не был установлен.
Если у кого-то проблема, добавьте -E
в команду, это сохранит среду пользователя.
sudo -E go run main.go
Для получения дополнительной информации см. обсуждение здесь: Группы Google - проблема GOPATH