"Đường dẫn nhập không được công nhận" với go get


93

Tôi đang cố gắng cài đặt một web.go, nhưng chạy go get github.com/hoisie/webtrả về

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"

và điều này tiếp tục trong một thời gian với các gói khác nhau, trước khi trả về không có gì khác. go envđưa cho tôi:

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"

Tôi có thể cài đặt bằng cách web.gonào? Sử dụng go get(thay vì go install) là những gì có trong README trên trang github. Phiên bản cờ vây của tôi là go version go1.2 linux/amd64.


3
Đã xuất GOROOT nhưng không có GOPATH? GOROOT khác với GOBIN? Bạn đã cài đặt Go như thế nào? Bạn đã thiết lập môi trường của mình như thế nào?
Volker

Tôi đã cài đặt go bằng cách theo dõi trang golang.org/doc/install . Tôi không chắc nên đặt gì cho GOPATH.
q3d

Câu trả lời:


102

Các vấn đề liên quan đến một không hợp lệ GOROOT.

Tôi nghĩ rằng bạn đã cài đặt Go in /usr/local/go.
Vì vậy, hãy thay đổi GOROOTđường dẫn của bạn thành giá trị của /usr/local/go/bin.

Có vẻ như bạn muốn đặt không gian làm việc (GOPATH) của mình tại /home/me/go.

Điều này có thể khắc phục sự cố của bạn.
Thêm cái này vào cuối hồ sơ bash của bạn, nằm ở đây =>$HOME/.profile

export GOROOT=/usr/local/go
export GOPATH=$HOME/go
export PATH=$PATH:$GOROOT/bin

Đảm bảo xóa các tham chiếu cũ của GOROOT.

Sau đó, hãy thử cài đặt lại web.go.

Nếu điều đó không hiệu quả, hãy cài đặt Ubuntu Go cho bạn.

sudo apt-get install golang

Video hướng dẫn: http://www.youtube.com/watch?v=2PATwIfO5ag


15
Bạn hầu như không bao giờ nên đặt GOROOT. Khai báo PATH của bạn không nhấn / usr / local / go / bin. Ngoài ra, cần lưu ý rằng các gói ubuntu chậm hơn một chút so với bản phát hành chính thức, là 1.2.
JimB

2
Khi tôi làm theo hướng dẫn đi cài đặt từ trang web chính thức (cài đặt từ tệp tar vào / usr / local), tôi đã gặp lỗi ở trên cho đến khi tôi thay đổi GOROOT như trên.
Drew

1
Vừa cài đặt new golang 1.3 trên fedora 20 và go getgặp lỗi tương tự. GOROOTđược đặt thành /usr, tự cài đặt vào / usr, không phải / usr / local. Đặt GOPATHthành $HOME/go. Bất kỳ ý tưởng nào khác để kiểm tra?
Dfr

15
Trả lời cho bản thân mình: GOROOTkhông đặt có vẻ như đã giải quyết được vấn đề.
Dfr

4
+1 vì không đặt GOROOT. Tôi bỏ cài nó, chắc chắn nó đã unset với echo $GOROOTsau đó kiểm tra rằng GO vẫn có nó trong env với go envmà nó đã làm và nó đã ở /usr/local/gonơi tôi đã đi cài đặt (do đó không cần phải cài đặt nó trong mọi trường hợp)
StartupGuy

36

Tôi đã cài đặt Go with brewtrên OSX 10.11 và thấy rằng tôi phải đặt GOROOTthành:

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

(Tất nhiên thay thế phiên bản trong đường dẫn này bằng phiên bản go mà bạn có)

Brew sử dụng các liên kết tượng trưng để đánh lừa gotool. Vì vậy, hãy làm theo các liên kết về nhà.


Ah, cuối cùng, tôi đã tìm thấy thứ gì đó hoạt động. Cảm ơn Eric!
Mir Adnan

23

Tôi đã gặp chính xác vấn đề tương tự, sau khi chuyển từ phiên bản cũ (được cài đặt từ PPA cũ) sang gói mặc định mới hơn (1.2.1) trong ubuntu 14.04.

Bước đầu tiên là xóa lượt đi hiện có:

sudo apt-get purge golang*

Đầu ra các cảnh báo sau:

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

Có vẻ như việc gỡ bỏ go để lại một số tệp, do đó có thể gây nhầm lẫn cho cài đặt mới hơn. Chính xác hơn, bản thân quá trình cài đặt sẽ hoàn thành tốt, nhưng sau đó bất kỳ lệnh go nào, chẳng hạn như "go get something" sẽ đưa ra các lỗi "đường dẫn nhập không được công nhận" đó.

Tất cả những gì tôi phải làm là xóa những dirs đó trước, cài đặt lại golang và tất cả đều hoạt động như một chiếc bùa (giả sử bạn cũng đặt GOPATH)

# careful!
sudo rm -rf /usr/lib/go /usr/lib/go/src
sudo apt-get install golang-go golang-go.tools

Tôi cũng phải xóa/usr/local/go/
Natim

Cũng phải loại bỏ / usr / bin / go.
eatonphil

6

Vì GFW cấm bạn truy cập golang.org! Và khi tôi sử dụng proxy, nó có thể hoạt động tốt.

bạn có thể xem thông tin bằng lệnh go get -v -u golang.org/x/oauth2


1
Đây chính xác là vấn đề tôi gặp phải khi ở Trung Quốc. Sau khi thiết lập $ http_proxy, tôi có thể cài đặt gói mà không gặp lỗi.
tái mét

1
Không chỉ bị chặn mà DNS cũng bị ô nhiễm. Trước tiên, hãy http://ping.eu/nslookup/tìm đúng IP của miền, đặt nó thành tệp máy chủ, sau đó sử dụng proxy để tải xuống. export http_proxy=127.0.0.1:1080 https_proxy=127.0.0.1:1080 Đôi khi bạn chỉ muốn nói từ F đến Gov
Mr.Wang từ Next Door

4

$ unset GOROOTđã làm cho tôi. Như hầu hết các câu trả lời cho thấy GOROOT của bạn không hợp lệ.


2

Tôi gặp sự cố tương tự trên MacOS 10.10. Và tôi thấy rằng vấn đề do OhMyZsh shell gây ra. Sau đó, tôi quay lại bash mọi thứ vẫn ổn.

Đây là tôi đi 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

Đó là go envtừ khi nó không hoạt động hay khi nó đã làm? Nó có thể không phải là "do [other shell] gây ra", mà có thể là do không đặt đúng GOPATHtrong shell khác đó. Họ shell csh và zsh không sử dụng các tệp khởi động giống nhau (tức là không ~/.profile). Cụ thể là zshsử dụng $ZDOTDIR/.zshenv$ZDOTDIR/.zprofile(trong đó $ZDOTDIRmặc định là $HOME).
Dave C

1

Các nguyên nhân phổ biến nhất là:
1. GOROOT
HOẶC
2. GOPATH không được định cấu hình không đúng


0

Tôi gặp sự cố tương tự sau khi nâng cấp go1.2 lên go1.4.

Tôi đã đổi tên src thành _src trong GOPATH của mình sau đó đã thực hiện một go get -v

Nó hoạt động sau đó tôi đã xóa _src.

Hy vọng nó giúp.


0

Tôi gặp sự cố này khi cài đặt một gói khác và có thể do cấu hình GOROOT và GOPATH trên PATH của bạn. Tôi có xu hướng không đặt GOROOT vì cài đặt OS X của tôi đã xử lý nó (tôi tin là vậy) cho tôi.

  1. Đảm bảo những điều sau trong .profile của bạn (hoặc bất cứ nơi nào bạn lưu trữ cấu hình hồ sơ: .bash_profile, .zshrc, .bashrc, v.v.):

    export GOPATH=$HOME/go
    export PATH=$PATH:$GOROOT/bin
  2. Ngoài ra, bạn có thể muốn unset GOROOT, trong trường hợp đường dẫn đó cũng không chính xác.

  3. Hơn nữa, hãy đảm bảo làm sạch PATH của bạn, tương tự như những gì tôi đã làm bên dưới, ngay trước khi gán GOPATH, tức là:

    export PATH=$HOME/bin:/usr/local/bin:$PATH
    export GOPATH=$HOME/go
    export PATH=$PATH:$GOROOT/bin
  4. Sau đó, source <.profile> để kích hoạt

  5. thử lại go get
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.