"непризнанный путь импорта" с go get
Я пытаюсь установить web.go
, но запуск go get github.com/hoisie/web
возвращает
package bufio: unrecognized import path "bufio"
package bytes: unrecognized import path "bytes"
package crypto/rand: unrecognized import path "crypto/rand"
package crypto/sha1: unrecognized import path "crypto/sha1"
package crypto/tls: unrecognized import path "crypto/tls"
package encoding/base64: unrecognized import path "encoding/base64"
package encoding/binary: unrecognized import path "encoding/binary"
package encoding/json: unrecognized import path "encoding/json"
package errors: unrecognized import path "errors"
package fmt: unrecognized import path "fmt"
и это продолжается некоторое время с различными пакетами, прежде чем ничего не возвращать. go env
дает мне:
GOARCH="amd64"
GOBIN="/usr/local/go/bin"
GOCHAR="6"
GOEXE=""
GOHOSTARCH="amd64"
GOHOSTOS="linux"
GOOS="linux"
GOPATH=""
GORACE=""
GOROOT="/home/me/go"
GOTOOLDIR="/home/me/go/pkg/tool/linux_amd64"
TERM="dumb"
CC="gcc"
GOGCCFLAGS="-g -O2 -fPIC -m64 -pthread"
CXX="g++"
CGO_ENABLED="1"
Как установить web.go
? Использование go get
(а не go install
) - это то, что находится в README на странице github. Моя версия Go go version go1.2 linux/amd64
.
Ответы
Ответ 1
Проблемы, связанные с недействительным GOROOT
.
Я думаю, что вы установили Go в /usr/local/go
.
Поэтому измените ваш путь GOROOT
на значение /usr/local/go/bin
.
Кажется, вы хотели, чтобы ваше рабочее пространство (GOPATH) находилось в /home/me/go
.
Это может решить вашу проблему.
Добавьте это в конец вашего профиля bash, расположенного здесь => $HOME/.profile
export GOROOT=/usr/local/go
export GOPATH=$HOME/go
export PATH=$PATH:$GOROOT/bin
Обязательно удалите старые ссылки GOROOT
.
Затем попробуйте установить web.go еще раз.
Если это не сработает, пусть Ubuntu установит Go для вас.
sudo apt-get install golang
Видеоурок: http://www.youtube.com/watch?v=2PATwIfO5ag
Ответ 2
Я установил Go с brew
в OSX 10.11 и обнаружил, что мне нужно установить GOROOT
в:
/usr/local/Cellar/go/1.5.1/libexec
(Конечно, замените версию на этом пути версией go, которую вы имеете)
Brew использует символические ссылки, которые обманывали gotool. Итак, следуйте ссылкам по ссылкам.
Ответ 3
У меня была точно такая же проблема, после перехода от старой версии go (установленной от старого PPA) к более новым (1.2.1) пакетам по умолчанию в ubuntu 14.04.
Первым шагом было очистить существующий go:
sudo apt-get purge golang*
Какие выдает следующие предупреждения:
dpkg: warning: while removing golang-go, directory '/usr/lib/go/src' not empty so not removed
dpkg: warning: while removing golang-go.tools, directory '/usr/lib/go' not empty so not removed
Похоже, что удаление go оставляет некоторые файлы позади, что, в свою очередь, может запутать новую установку. Точнее, сама установка завершится нормально, но потом любая команда go, например, "go get something", дает те ошибки "непризнанного импорта".
Все, что мне нужно было сделать, это сначала удалить эти ролики, переустановить golang, и все работает как шарм (при условии, что вы также установили GOPATH)
# careful!
sudo rm -rf /usr/lib/go /usr/lib/go/src
sudo apt-get install golang-go golang-go.tools
Ответ 4
Потому что GFW запретил вам доступ к golang.org!
И когда я использую прокси-сервер, он может работать хорошо.
вы можете посмотреть информацию с помощью команды
go get -v -u golang.org/x/oauth2
Ответ 5
У меня была та же проблема на MacOS 10.10. И я обнаружил, что проблема вызвана оболочкой OhMyZsh. Затем я переключился на bash все прошло нормально.
Вот мой go env
bash-3.2$ go env
GOARCH="amd64"
GOBIN=""
GOCHAR="6"
GOEXE=""
GOHOSTARCH="amd64"
GOHOSTOS="darwin"
GOOS="darwin"
GOPATH="/Users/bis/go"
GORACE=""
GOROOT="/usr/local/go"
GOTOOLDIR="/usr/local/go/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
Ответ 6
У меня была такая же проблема после обновления go1.2 до go1.4.
Я переименовал src в _src в моем GOPATH, затем сделал go get -v
Сработало, тогда я удалил _src.
Надеюсь, что это поможет.
Ответ 7
У меня была аналогичная проблема. Но это было только потому, что пакет, который я устанавливал, не находится в каталоге $GOPATH/src/
, когда я установил его в этом каталоге, все работало нормально (за исключением того, что имя пакета различно вызвало проблему, но я использовал Makefile для сборки, чтобы это не было актуальным к вашей проблеме).
Ответ 8
Я столкнулся с этой проблемой при установке другого пакета, и она может быть вызвана конфигурацией GOROOT и GOPATH в вашей переменной PATH. Я склонен не устанавливать GOROOT, потому что моя установка OS X справилась с этим (я считаю) для меня.
-
Убедитесь, что в вашем .profile (или там, где вы храните конфигурацию профиля):.bash_profile,.zshrc,.bashrc и т.д.):
export GOPATH=$HOME/go
export PATH=$PATH:$GOROOT/bin
-
Кроме того, вы, вероятно, также хотите unset GOROOT
, если этот путь также неверен.
-
Кроме того, обязательно очистите свой PATH, аналогично тому, что я сделал ниже, непосредственно перед назначением GOPATH, то есть:
export PATH=$HOME/bin:/usr/local/bin:$PATH
export GOPATH=$HOME/go
export PATH=$PATH:$GOROOT/bin
-
Затем source <.profile>
для активации
- повторите попытку
go get
Ответ 9
$ unset GOROOT
работал на меня. Поскольку большинство ответов предполагают, что ваш GOROOT недействителен.
Ответ 10
Наиболее распространенные причины:
1. Неправильно настроенный GOROOT
ИЛИ ЖЕ
2. GOPATH не установлен