“Невизнаний шлях імпорту” з go get


93

Я намагаюся встановити a web.go, але запускаю go get github.com/hoisie/webreturn

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. Версія My Go є go version go1.2 linux/amd64.


3
Експортували GOROOT, але немає GOPATH? GOROOT відрізняється від GOBIN? Як ви встановили Go? Як ти створив своє середовище?
Volker

Я встановив go, дотримуючись сторінки golang.org/doc/install . Я не був впевнений, що поставити для GOPATH.
q3d

Відповіді:


102

Питання стосуються інваліда GOROOT.

Я думаю, ви встановили Go in /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


15
Ви майже ніколи не повинні встановлювати GOROOT. Декларація PATH не потрапляє в / usr / local / go / bin. Також слід зазначити, що пакети ubuntu трохи відстають від офіційного випуску, який становить 1.2.
JimB

2
Коли я дотримувався інструкцій go install з офіційного сайту (встановити з файлу tar у / usr / local), я отримував помилку вище, поки не змінив GOROOT, як зазначено вище.
Дрю

1
Щойно встановлений свіжий golang 1.3 на Fedora 20 і go getдає ту ж помилку. GOROOTвстановлено на /usr, перейти до встановлення в / usr, а не / usr / local. Набір GOPATHдля $HOME/go. Будь-яка ідея, що ще перевірити?
Dfr

15
Відповідаючи самому собі: GOROOTздається, неполадка вирішила проблему.
Dfr

4
+1 за невстановлення GOROOT. Я зняв його, переконався, що його не встановлено, а echo $GOROOTпотім перевірив, що GO все ще зберігає його в тій середовищі, з go envякою він це робив, і він знаходиться /usr/local/goтам, де я перейшов (таким чином не потрібно встановлювати його в будь-якому випадку)
StartupGuy

36

Я встановив Go with brewна OSX 10.11 і виявив, що мені потрібно встановити GOROOT:

/usr/local/Cellar/go/1.5.1/libexec

(Звичайно, замініть версію в цьому шляху на вашу версію go)

Брю використовує символічні посилання, які обманювали gotool. Тож переходьте за посиланнями додому.


Нарешті, я знайшов щось, що спрацювало. Дякую Еріку!
Mir Adnan

23

У мене була точно така ж проблема, після переходу зі старої версії 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

Мені також довелося видалити/usr/local/go/
Натіма

Також довелося видалити / usr / bin / go.
eatonphil

6

Оскільки GFW заборонив вам отримати доступ до golang.org! І коли я використовую проксі, він може добре працювати.

Ви можете переглянути інформацію за допомогою команди go get -v -u golang.org/x/oauth2


1
Це саме така проблема у мене, коли я перебуваю в Китаї. Після встановлення $ http_proxy я можу встановити пакет без помилок.
попелястий

1
Не тільки заблоковано, але й забруднено DNS. Спочатку перейдіть до, http://ping.eu/nslookup/щоб знайти правильний IP домену, встановіть його у файл hosts, а потім скористайтеся проксі для завантаження. export http_proxy=127.0.0.1:1080 https_proxy=127.0.0.1:1080 Іноді вам просто хочеться сказати F-слово уряду
містеру Ванґу із сусідніх дверей

4

$ unset GOROOTпрацював у мене. Оскільки більшість відповідей припускають, що ваш GOROOT недійсний.


2

У мене була така сама проблема на MacOS 10.10. І я виявив, що проблема, спричинена оболонкою OhMyZsh. Потім я повернувся до башу, і все пішло нормально.

Ось мій 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

Це go envз того моменту, коли це не спрацювало чи коли? Ймовірно, це не було "спричинено [іншою оболонкою]", швидше за все, це було помилкою правильного встановлення GOPATHв цій іншій оболонці. Сімейства оболонок csh та zsh не використовують однакові файли запуску (тобто ні ~/.profile). Зокрема zshвикористовує $ZDOTDIR/.zshenvта $ZDOTDIR/.zprofile(де $ZDOTDIRза замовчуванням $HOME).
Dave C

1

Найпоширенішими причинами є:
1. Неправильно налаштований GOROOT
АБО
2. GOPATH не встановлений


0

У мене була та ж проблема після оновлення go1.2 до go1.4.

Я перейменував src на _src у своєму GOPATH, а потім зробив файл go get -v

Це спрацювало, тоді я видалив _src.

Сподіваюся, це допоможе.


0

Я зіткнувся з цією проблемою під час встановлення іншого пакета, і це може бути спричинено конфігурацією 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
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.