"непризнанный путь импорта" с 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 справилась с этим (я считаю) для меня.

  1. Убедитесь, что в вашем .profile (или там, где вы храните конфигурацию профиля):.bash_profile,.zshrc,.bashrc и т.д.):

    export GOPATH=$HOME/go
    export PATH=$PATH:$GOROOT/bin
    
  2. Кроме того, вы, вероятно, также хотите unset GOROOT, если этот путь также неверен.

  3. Кроме того, обязательно очистите свой PATH, аналогично тому, что я сделал ниже, непосредственно перед назначением GOPATH, то есть:

    export PATH=$HOME/bin:/usr/local/bin:$PATH
    export GOPATH=$HOME/go
    export PATH=$PATH:$GOROOT/bin
    
  4. Затем source <.profile> для активации

  5. повторите попытку go get

Ответ 9

$ unset GOROOT работал на меня. Поскольку большинство ответов предполагают, что ваш GOROOT недействителен.

Ответ 10

Наиболее распространенные причины:
1. Неправильно настроенный GOROOT
ИЛИ ЖЕ
2. GOPATH не установлен