indirilemiyor, $ GOPATH ayarlanmadı


150

Kullanarak json2csv yüklemek istiyorum go get github.com/jehiah/json2csvama bu hatayı alıyorum:

package github.com/jehiah/json2csv: cannot download, $GOPATH not set. For more details see: go help go path

MacOS'ta bunu düzeltmek için herhangi bir yardım var mı?




3
Farklı bir paket (pup) ile aynı sorunu yaşıyorum. Hadi bakıcılar, lütfen işi bitiren bir (OS X) yükleyicisi yapın! Düğüm için OS X yükleyicisi harika bir örnektir. Düğümün kullanılması ek manuel kurulum adımları gerektirmez. Sadece çalışıyor. Umarız Go yükleyicisinin gelecekteki sürümleri daha iyi olur.
jwfearn

Yanıtlar:


140

[Güncelleme: Go 1.8'den itibaren GOPATHvarsayılan olarak $HOME/go, ancak GOPATHdüzeni anlamak , özelleştirmek vb. İstiyorsanız bunu yararlı bulabilirsiniz .]

Resmi Go sitesinde GOPATH ve bir çalışma alanı dizininin nasıl oluşturulacağı tartışılmaktadır .

export GOPATH="$HOME/your-workspace-dir/"- kabuğunuzda çalıştırın, daha sonra sizin ~/.bashrciçin ayarlanacak şekilde veya eşdeğerine ekleyin . Git altında paketleri kuracaktır src/, bin/ve pkg/, alt dizinleri vardır. GitHub'da yayınlamak istiyorsanız $GOPATH/src, kendi paketlerinizi altına bir yere koymak $GOPATH/src/github.com/myusername/isteyeceksiniz. Muhtemelen export PATH=$PATH:$GOPATH/binsizin de isteyeceksiniz , .bashrcböylece altında derlenmiş programları çalıştırabilirsiniz $GOPATH.

İsteğe bağlı olarak, Rob Pike aracılığıyla , direkleri bash içinde paketlemenin CDPATHdaha hızlı olmasını da ayarlayabilirsiniz cd: bunun yerine export CDPATH=.:$GOPATH/src/github.com:$GOPATH/src/golang.org/xyazmanız cd net/htmlyeterlidir cd $GOPATH/src/golang.org/x/net/html.

Keith Rarick notları Belirleyebileceğiniz GOPATH=$HOMEGit adlı koymak src/, pkg/ve bin/sağ homedir altında dizinleri. Bu güzel olabilir (örneğin, zaten yolunuzda olabilir $HOME/bin) ama elbette bazı insanlar birden fazla çalışma alanı kullanıyorlar.


Bilgi için teşekkürler. Her bir proje için çalışma alanınızı değiştirmeniz mi gerekiyor?
Doug Molineux

1
Genel olarak hayır, src/örn. github.com/youruser/xVe öğelerini içeren bir çalışma alanı kullanabilirsiniz github.com/youruser/y. İşte bu yaptığım şey. İnsanların başka türlü nedenleri olabilir (projeleri birbirinden uzak tutmak için şirket politikası?), Ama bununla konuşamam.
twotwotwo

3
$ GOPATH ayarlandı, ancak "indirilemiyor, $ GOPATH ayarlanmadı. Daha fazla ayrıntı için bkz: go help gopath" yine de görünüyor.
Tyguy7

Hangi platform (Windows veya Linux / OS X / diğer Unix)? Windows değilse ne echo $GOPATHdiyor? Ayrı bir soru olarak göndermeye değer olabilir; alışılmadık bir durumdaymışsınız gibi geliyor ve yorumlarda hata ayıklamak zor olabilir.
twotwotwo

2
@ Tyguy7 şansınız olmadı export; /bin/bash -c "echo \$GOPATH"alt süreçlerin görebildiğini doğrulamak için çalıştırın $GOPATH; boş kalırsa, o zaman koş export GOPATHve sonrago get ...
sanmai


33

Demlemek kullanma

Ben kullanarak kurdum brew.

$ brew install go

Bu demleme komutunu çalıştırdığınızda, aşağıdaki bilgileri gösterecektir:

$ 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

Önemli parçalar şu hatlar:

/usr/local/Cellar/go/1.4.2 (4676 dosya, 158M) *

dışa aktarma PATH = $ PATH: / usr / local / opt / go / libexec / bin

GO ortamını kurma

Bu GO'nun nereye kurulduğunu gösterir. GO ortamını kurmak için aşağıdakileri yapmamız gerekir:

$ export PATH=$PATH:/usr/local/opt/go/libexec/bin
$ export GOPATH=/usr/local/opt/go/bin

Ardından, düzgün yapılandırılıp yapılandırılmadığını görmek için GO'yu kullanarak kontrol edebilirsiniz:

$ 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 kurulumu

İyi görünüyor, bu yüzden json2csvşunları yükleyelim :

$ go get github.com/jehiah/json2csv
$

Az önce ne oldu? Kurdu. Bunu şöyle kontrol edebilirsiniz:

$ $ ls -l $GOPATH/bin
total 5248
-rwxr-xr-x  1 sammingolelli  staff  2686320 Jun  9 12:28 json2csv

Tamam, neden json2csvkabuğuma yazamıyorum? Bunun nedeni, /binaltındaki dizinin $GOPATHsizin üzerinde olmamasıdır $PATH.

$ type -f json2csv
-bash: type: json2csv: not found

Şimdi geçici olarak ekleyelim:

$ export PATH=$GOPATH/bin:$PATH

Ve tekrar kontrol edin:

$ type -f json2csv
json2csv is hashed (/usr/local/opt/go/bin/bin/json2csv)

Şimdi orada:

$ 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

Yeniden başlatmalar arasında kalmasını sağlamak için yaptığımız $PATHve $GOPATHsizin yaptığınız değişiklikleri ekleyin $HOME/.bash_profile.


18

Bir video izle

Genel olarak, konuyla ilgili hızlı bir genel bakış için her zaman Go'dan bu resmi videoyu öneriyorum:

http://www.youtube.com/watch?v=XCsL89YtqCs

Gösterilmesi söylenenden daha kolaydır.

@jwfearn videonun önemli bölümünü açıkladı :

export GOPATH="${HOME}/gocode"; export PATH="${PATH}:${GOPATH}/bin"; mkdir -p "${GOPATH}"


2
Mükemmel tanıtım videosu - Bana gösterildiğinde her zaman daha iyi anlarım.
Joshua Pinter

3
Teşekkürler @jwfearn - videolar müzik ve diğer eğlence amaçlıdır; onlardan kopyalayıp yapıştıramaz :-)
kguest

5

Böyle yapmak daha kolay buldum:

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

3

MAC için bu benim için iyi çalıştı.

sudo nano /etc/bashrc

ve dosyanın sonuna aşağıdakini ekleyin

export PATH=$PATH:/usr/local/opt/go/libexec/bin
export GOPATH=/usr/local/opt/go/bin

Bu, sorunu çözmeli. Yeni bir terminal açmayı deneyin ve doğru değeri görmeniz için $ GOPATH yankılayın.


2

(Mac için)

Tüm bu cevapları denedim ve hala bilinmeyen bir nedenden dolayı hiçbiri işe yaramadı.

Ben gereken her komut için ortam değişkenini ayarlayarak GOPATH "zorla beslemek" zorunda kaldı. Örneğin:

sudo env GOPATH=$HOME/goWorkDirectory go build ...

Hatta glidebana GOPATH not sethata veriyordu . Tekrar "zorla besleme" ile çözüldü: Tüm bu cevapları denedim ve hala bilinmeyen bir nedenden dolayı hiçbiri işe yaramadı.

Ben gereken her komut için ortam değişkenini ayarlayarak GOPATH "zorla beslemek" zorunda kaldı.

sudo env GOPATH=$HOME/goWorkDirectory glide install

Umarım bu birine yardımcı olur.


2

Sizin $GOROOTayarlanmamalısınız. Sen $GOPATHayarlanması gerekir $HOME/goyazarakexport $GOPATH=$HOME/go

export GOROOT=""Sorununuzu çözmek için lütfen yazın .


1

Sadece yap export GOPATH="/whatever/you/like/your/GOPATH/to/be".


4
Eğer gidip çaylansam, "GOPATH'imin nerede olmasını istediğimi" henüz bilmiyorum. IMHO , bir ortam değişkeni tarafından geçersiz kılınabilecek varsayılan bir GOPATH davranışı olmadığı bir sürüklemedir .
jwfearn

0

Kurduktan sonra bu sorunla karşılaşırsanız $GOPATH, bunun nedeni desteklenmeyen bir kabukla çalıştırmanız olabilir. Kullanıyordum fishve işe yaramadı, işe bashyaradı.


0

"Dışa aktar" çözümünü, diğer kullanıcıların önerdiği gibi kullanabilirsiniz. Size kalıcı kolaylık sağlamak için başka bir çözüm sunmak istiyorum: Go komutlarını çalıştırırken GOPATH olarak herhangi bir yolu kullanabilirsiniz.

Öncelikle, adlı küçük Aracı indirmek gerekir gost: https://github.com/byte16/gost/releases . Ubuntu kullanıyorsanız, linux sürümünü indirebilirsiniz ( https://github.com/byte16/gost/releases/download/v0.1.0/gost_linux_amd64.tar.gz ).

Ardından, paketini açmak için aşağıdaki komutları çalıştırmanız gerekir:

$ cd /path/to/your/download/directory 
$ tar -xvf gost_linux_amd64.tar.gz

Bir yürütülebilir dosya alırsınız gost. /usr/local/binRahat kullanım için taşıyabilirsiniz :

$ sudo mv gost /usr/local/bin

Eğer içine GOPATH olarak kullanmak istediğiniz yolu eklemek için aşağıdaki komutu çalıştırın pathspace gost korur. Yola daha sonra kullanacağınız bir ad vermek gerekir.

$ gost add foo /home/foobar/bar     # 'foo' is the name and '/home/foobar/bar' is the path

İstediğiniz herhangi bir Git komutunu şu biçimde çalıştırın:

gost goCommand [-p {pathName}] -- [goFlags...] [goArgs...]

Örneğin, çalıştırmak istediğiniz go get github.com/go-sql-driver/mysqlile /home/foobar/bar, hemen altında olarak yapmak GOPATH olarak:

$ gost get -p foo -- github.com/go-sql-driver/mysql  # 'foo' is the name you give to the path above.

GOPATH'ı ayarlamanıza ve komutu çalıştırmanıza yardımcı olur. Ama içine yolunu eklemiş unutmayın gostbireyin pathspace . Eğer herhangi bir alt dizin seviyesinin /home/foobar/baraltındaysanız, aynı komutu kısaca yapacak olan aşağıdaki komutu da çalıştırabilirsiniz:

$ gost get -- github.com/go-sql-driver/mysql

gostGOPATH'leri yönetmenize ve Go komutlarını çalıştırmanıza yardımcı olabilecek Basit bir Go Aracıdır. Diğer Go komutlarını çalıştırmak için nasıl kullanılacağı hakkında daha fazla bilgi için sadece çalıştırabilirsiniz gost help goCmdName. Örneğin hakkında daha fazla bilgi edinmek istiyorsanız install, aşağıdaki kelimeleri yazmanız yeterlidir:

$ gost help install

Daha fazla bilgiyi projenin README'sinde de bulabilirsiniz: https://github.com/byte16/gost/blob/master/README.md


0

'Go env' komutunu çalıştırın ve GOPATH'ınızın şu anda nereye baktığını görün. Bu dizine geçerseniz, 'go get..etc' komutunuzun çalışması gerekir.


0

Bu sorun bana ahududu pi. VNC istemcisi aracılığıyla oturum açmıştım. Sonra sudo olmadan "go get" komutunu çalıştırın ve mükemmel çalıştı.


-1

Bir uygulamayı root olarak çalıştırmak zorunda kaldım (bağlantı noktası 80'de bir web sunucusu açmak için), bu benim için hata üretti, çünkü sudo kullanıcısı normal kullanıcıdan farklı bir ortama sahip, bu nedenle GOPATH ayarlanmadı.

Başka biri bu sorunu yaşıyorsa -E, komuta ekleyin , bu kullanıcı ortamını koruyacaktır.

sudo -E go run main.go

Daha fazla bilgi için buradaki tartışmaya bakın: Google Grupları - GOPATH Sorunu


Bunun neden reddedildiğinden emin değilim, ama benim için düzeltti…
Pwdr
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.