Saya ingin menginstal json2csv menggunakan go get github.com/jehiah/json2csv
tetapi saya menerima kesalahan ini:
package github.com/jehiah/json2csv: cannot download, $GOPATH not set. For more details see: go help go path
Adakah bantuan tentang cara memperbaikinya pada MacOS?
macos
installation
go
Mona Jalal
sumber
sumber
Jawaban:
[Perbarui: mulai Go 1.8,
GOPATH
default untuk$HOME/go
, tetapi Anda mungkin masih menemukan ini berguna jika Anda ingin memahamiGOPATH
tata letak, menyesuaikannya, dll.]Situs resmi Go membahas GOPATH dan cara membuat direktori ruang kerja .
export GOPATH="$HOME/your-workspace-dir/"
- jalankan di shell Anda, lalu tambahkan~/.bashrc
atau sederajat sehingga akan ditetapkan untuk Anda di masa mendatang. Go akan menginstal paket di bawahsrc/
,bin/
danpkg/
, subdirektori sana. Anda ingin meletakkan paket Anda sendiri di suatu tempat di bawah$GOPATH/src
, seperti$GOPATH/src/github.com/myusername/
jika Anda ingin menerbitkan ke GitHub. Anda mungkin juga inginexport PATH=$PATH:$GOPATH/bin
di dalam Anda.bashrc
sehingga Anda dapat menjalankan program yang dikompilasi di bawah$GOPATH
.Secara opsional, melalui Rob Pike , Anda juga dapat mengatur
CDPATH
sehingga lebih cepatcd
untuk mengemas dirs dalam bash:export CDPATH=.:$GOPATH/src/github.com:$GOPATH/src/golang.org/x
artinya Anda bisa mengetik sajacd net/html
alih-alihcd $GOPATH/src/golang.org/x/net/html
.Keith Rarick mencatat Anda dapat mengatur
GOPATH=$HOME
untuk meletakkan Gosrc/
,pkg/
danbin/
direktori tepat di bawah homedir Anda. Itu bisa menyenangkan (misalnya, Anda mungkin sudah ada$HOME/bin
di jalur Anda) tetapi tentu saja beberapa orang menggunakan beberapa ruang kerja, dll.sumber
src/
berisi misgithub.com/youruser/x
dangithub.com/youruser/y
. Itu yang saya lakukan. Orang mungkin memiliki alasan untuk melakukan sebaliknya (kebijakan perusahaan untuk memisahkan proyek?), Tetapi saya tidak dapat berbicara tentang itu.echo $GOPATH
isinya? Mungkin layak dikirim sebagai pertanyaan terpisah; sepertinya Anda berada dalam situasi yang tidak biasa, dan men-debug itu dalam komentar bisa rumit.export
; jalankan/bin/bash -c "echo \$GOPATH"
untuk memverifikasi bahwa sub-proses dapat melihat$GOPATH
; jika gema kosong, jalankanexport GOPATH
dan kemudiango get ...
Yang ini berhasil
Menyiapkan Go development environment di Ubuntu, dan cara memperbaiki $ GOPATH / $ GOROOT
Langkah
Set $ GOPATH dalam .bashrc,
sumber
Menggunakan minuman
Saya menginstalnya menggunakan
brew
.Ketika itu selesai jika Anda menjalankan perintah minuman ini akan menampilkan info berikut:
Potongan-potongan penting ada garis-garis ini:
Menyiapkan lingkungan GO
Itu menunjukkan di mana GO diinstal. Kita perlu melakukan hal berikut untuk menyiapkan lingkungan GO:
Anda kemudian dapat memeriksa menggunakan GO untuk melihat apakah itu dikonfigurasi dengan benar:
Menyiapkan json2csv
Terlihat bagus, jadi mari kita instal
json2csv
:Apa yang baru saja terjadi? Itu menginstalnya. Anda dapat memeriksa seperti ini:
OK, jadi mengapa saya tidak bisa mengetikkan
json2csv
shell saya? Itu karena/bin
direktori di bawah$GOPATH
tidak ada di Anda$PATH
.Jadi mari kita tambahkan sementara:
Dan periksa kembali:
Sekarang ada di sana:
Tambahkan modifikasi yang telah kami buat
$PATH
dan buat$GOPATH
Anda$HOME/.bash_profile
untuk membuatnya bertahan di antara reboot.sumber
Tonton Video
Secara umum, saya selalu merekomendasikan video resmi ini dari Go untuk mendapatkan gambaran umum singkat tentang masalah ini:
http://www.youtube.com/watch?v=XCsL89YtqCs
Lebih mudah ditampilkan daripada diberi tahu.
@jwfearn memparafrasekan bagian penting dari video:
sumber
Saya merasa lebih mudah melakukannya seperti ini:
sumber
Bagi MAC ini bekerja dengan baik untuk saya.
dan tambahkan di bawah ini di akhir file
Ini harus memperbaiki masalah. Coba buka terminal baru dan echo $ GOPATH Anda akan melihat nilai yang benar.
sumber
(untuk Mac)
Saya mencoba semua jawaban ini dan, untuk beberapa alasan yang masih belum diketahui, tidak ada yang berhasil.
Saya harus "memaksa memberi makan" GOPATH dengan mengatur variabel lingkungan per setiap perintah yang membutuhkannya. Sebagai contoh:
Bahkan
glide
memberi sayaGOPATH not set
kesalahan. Lagi-lagi diselesaikan dengan "pemaksaan makan": Saya mencoba semua jawaban ini dan, untuk beberapa alasan yang masih belum diketahui, tidak ada yang berhasil.Saya harus "memaksa memberi makan" GOPATH dengan mengatur variabel lingkungan per setiap perintah yang membutuhkannya.
Semoga ini bisa membantu seseorang.
sumber
Anda
$GOROOT
seharusnya tidak diatur. Anda$GOPATH
harus diatur$HOME/go
dengan mengetikexport $GOPATH=$HOME/go
Silakan ketik
export GOROOT=""
untuk memperbaiki masalah Anda.sumber
Lakukan saja
export GOPATH="/whatever/you/like/your/GOPATH/to/be"
.sumber
Jika Anda mengalami masalah ini setelah
$GOPATH
menyiapkan, itu mungkin karena Anda menjalankannya dengan shell yang tidak didukung. Saya menggunakanfish
dan itu tidak berhasil, meluncurkannya denganbash
bekerja dengan baik.sumber
Anda dapat menggunakan solusi "ekspor" seperti yang disarankan orang lain. Saya ingin memberi Anda solusi lain untuk kenyamanan permanen: Anda dapat menggunakan jalur apa pun sebagai GOPATH saat menjalankan perintah Go.
Pertama, Anda perlu mengunduh alat kecil bernama
gost
: https://github.com/byte16/gost/releases . Jika Anda menggunakan ubuntu, Anda dapat mengunduh versi linux ( https://github.com/byte16/gost/releases/download/v0.1.0/gost_linux_amd64.tar.gz ).Maka Anda perlu menjalankan perintah di bawah ini untuk membukanya:
Anda akan mendapatkan executable
gost
. Anda dapat memindahkannya ke/usr/local/bin
untuk penggunaan yang nyaman:Jalankan perintah di bawah ini untuk menambahkan jalur yang ingin Anda gunakan sebagai GOPATH ke dalam pathspace yang
gost
dipertahankan. Diperlukan untuk memberi nama path yang akan Anda gunakan nanti.Jalankan perintah Go yang Anda inginkan dalam format:
Misalnya, Anda ingin menjalankan
go get github.com/go-sql-driver/mysql
dengan/home/foobar/bar
sebagai GOPATH, lakukan saja seperti di bawah ini:Ini akan membantu Anda untuk mengatur GOPATH dan menjalankan perintah. Tetapi ingat bahwa Anda telah menambahkan path ke
gost
dalam pathspace . Jika Anda berada di bawah level subdirektori apa pun/home/foobar/bar
, Anda bahkan dapat menjalankan perintah di bawah ini yang akan melakukan hal yang sama:gost
adalah Alat Go yang Sederhana yang dapat membantu Anda mengelola GOPATH dan menjalankan perintah Go. Untuk detail lebih lanjut tentang cara menggunakannya untuk menjalankan perintah Go lainnya, Anda bisa menjalankannyagost help goCmdName
. Misalnya Anda ingin tahu lebih banyak tentanginstall
, ketik saja kata-kata di bawah ini di:Anda juga dapat menemukan rincian lebih lanjut dalam README proyek: https://github.com/byte16/gost/blob/master/README.md
sumber
Jalankan 'go env' dan lihat ke mana tujuan GOPATH Anda saat ini. Jika Anda mengubah ke direktori itu, perintah 'go get..etc' Anda akan berfungsi.
sumber
Masalah ini terjadi pada saya di raspberry pi. Saya telah masuk melalui klien VNC. Masalahnya tetap ada meskipun mengatur dan mengekspor GOPATH. Lalu, jalankan perintah "pergi" tanpa sudo dan itu bekerja dengan sempurna.
sumber
Saya harus menjalankan aplikasi sebagai root (untuk membuka server web pada port 80), ini menghasilkan kesalahan bagi saya, karena pengguna sudo memiliki lingkungan yang berbeda dari pengguna normal, maka GOPATH tidak disetel.
Jika orang lain mengalami masalah ini, tambahkan
-E
ke perintah, ini akan menjaga lingkungan pengguna.sudo -E go run main.go
Untuk info lebih lanjut lihat diskusi di sini: Grup Google - Masalah GOPATH
sumber