ฉันต้องการติดตั้ง json2csv โดยใช้go get github.com/jehiah/json2csv
แต่ฉันได้รับข้อผิดพลาดนี้:
package github.com/jehiah/json2csv: cannot download, $GOPATH not set. For more details see: go help go path
ความช่วยเหลือเกี่ยวกับวิธีการแก้ไขใน MacOS?
ฉันต้องการติดตั้ง json2csv โดยใช้go get github.com/jehiah/json2csv
แต่ฉันได้รับข้อผิดพลาดนี้:
package github.com/jehiah/json2csv: cannot download, $GOPATH not set. For more details see: go help go path
ความช่วยเหลือเกี่ยวกับวิธีการแก้ไขใน MacOS?
คำตอบ:
[อัปเดต: ตั้งแต่ Go 1.8, เป็นGOPATH
ค่าเริ่มต้น$HOME/go
แต่คุณยังอาจพบว่ามีประโยชน์นี้หากคุณต้องการทำความเข้าใจกับGOPATH
เลย์เอาต์ปรับแต่ง ฯลฯ ]
อย่างเป็นทางการไปเว็บไซต์กล่าวถึง GOPATH และวิธีการที่จะออกวางไดเรกทอรีพื้นที่ทำงาน
export GOPATH="$HOME/your-workspace-dir/"
- รันมันในเชลล์ของคุณจากนั้นเพิ่มไปยัง~/.bashrc
หรือเทียบเท่าดังนั้นมันจะถูกตั้งค่าสำหรับคุณในอนาคต ไปจะติดตั้งแพคเกจภายใต้src/
, bin/
และpkg/
ไดเรกทอรีย่อยมี คุณจะต้องวางแพคเกจของคุณเองที่อื่น$GOPATH/src
เช่น$GOPATH/src/github.com/myusername/
ถ้าคุณต้องการเผยแพร่ไปยัง GitHub คุณจะยังอาจต้องการexport PATH=$PATH:$GOPATH/bin
ของคุณในโปรแกรมเพื่อให้คุณสามารถทำงานภายใต้การเรียบเรียง.bashrc
$GOPATH
เลือกผ่านทางร็อบหอกคุณยังสามารถตั้งค่าCDPATH
เพื่อให้มันเร็วขึ้นเพื่อcd
การแพคเกจ dirs ในทุบตี: export CDPATH=.:$GOPATH/src/github.com:$GOPATH/src/golang.org/x
หมายความว่าคุณสามารถเพียงพิมพ์แทนcd net/html
cd $GOPATH/src/golang.org/x/net/html
Keith Rarick ตั้งข้อสังเกตว่าคุณสามารถตั้งค่าGOPATH=$HOME
ให้วาง Go's src/
ได้pkg/
และbin/
ไดเรกทอรีต่างๆ นั่นอาจเป็นสิ่งที่ดี (ตัวอย่างเช่นคุณอาจมีอยู่แล้ว$HOME/bin
ในเส้นทางของคุณ) แต่แน่นอนว่าบางคนใช้พื้นที่ทำงานหลายแห่งเป็นต้น
src/
ประกอบด้วยเช่นและgithub.com/youruser/x
github.com/youruser/y
นั่นคือสิ่งที่ฉันทำ. ผู้คนอาจมีเหตุผลที่ต้องทำอย่างอื่น (นโยบายของ บริษัท เพื่อแยกโครงการออกจากกัน?) แต่ฉันไม่สามารถพูดกับสิ่งนั้นได้
echo $GOPATH
พูด? มันอาจจะคุ้มค่าที่จะโพสต์เป็นคำถามแยกต่างหาก ดูเหมือนว่าคุณกำลังอยู่ในสถานการณ์ที่ผิดปกติและการแก้ไขข้อบกพร่องในความคิดเห็นอาจเป็นเรื่องยุ่งยาก
export
มันTyguy7 ; ทำงาน/bin/bash -c "echo \$GOPATH"
เพื่อตรวจสอบว่ากระบวนการย่อยสามารถดู$GOPATH
; ถ้ามันว่างเปล่าให้เรียกใช้export GOPATH
แล้วgo get ...
อันนี้ใช้ได้ผล
การตั้งค่าสภาพแวดล้อมการพัฒนา Go บน Ubuntu และวิธีแก้ไข $ GOPATH / $ GOROOT
ขั้นตอน
mkdir ~/go
ตั้งค่า $ GOPATH ใน. bashrc
export GOPATH=~/go
export PATH=$PATH:$GOPATH/bin
brew
ผมติดตั้งได้โดยใช้
$ brew install go
เมื่อเสร็จแล้วหากคุณเรียกใช้คำสั่งชงนี้มันจะแสดงข้อมูลต่อไปนี้:
$ 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
ชิ้นส่วนที่สำคัญมีบรรทัดเหล่านี้:
/usr/local/Cellar/go/1.4.2 (4676 ไฟล์ 158M) *
ส่งออก PATH = $ PATH: / usr / local / opt / go / libexec / bin
ที่แสดงตำแหน่งที่ติดตั้ง GO เราต้องทำสิ่งต่อไปนี้เพื่อตั้งค่าสภาพแวดล้อมของ GO:
$ export PATH=$PATH:/usr/local/opt/go/libexec/bin
$ export GOPATH=/usr/local/opt/go/bin
จากนั้นคุณสามารถตรวจสอบโดยใช้ GO เพื่อดูว่ามีการกำหนดค่าอย่างถูกต้องหรือไม่:
$ 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
:
$ go get github.com/jehiah/json2csv
$
เกิดอะไรขึ้น? มันติดตั้งมัน คุณสามารถตรวจสอบสิ่งนี้:
$ $ ls -l $GOPATH/bin
total 5248
-rwxr-xr-x 1 sammingolelli staff 2686320 Jun 9 12:28 json2csv
ตกลงดังนั้นทำไมฉันพิมพ์json2csv
ในเปลือกไม่ได้? นั่นเป็นเพราะ/bin
ภายใต้ไดเรกทอรีไม่ได้อยู่ในของคุณ$GOPATH
$PATH
$ type -f json2csv
-bash: type: json2csv: not found
ดังนั้นให้เพิ่มชั่วคราว:
$ export PATH=$GOPATH/bin:$PATH
และตรวจสอบอีกครั้ง:
$ type -f json2csv
json2csv is hashed (/usr/local/opt/go/bin/bin/json2csv)
ตอนนี้มันอยู่ที่นั่น:
$ 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
เพิ่มการปรับเปลี่ยนที่เราได้ทำไป$PATH
และ$GOPATH
ที่คุณ$HOME/.bash_profile
จะทำให้พวกเขายังคงอยู่ระหว่างการเริ่มต้นใหม่
โดยทั่วไปฉันแนะนำวิดีโออย่างเป็นทางการนี้จาก Go เพื่อรับภาพรวมอย่างรวดเร็วเกี่ยวกับเรื่องนี้:
http://www.youtube.com/watch?v=XCsL89YtqCs
มันง่ายที่จะแสดงมากกว่าที่จะบอก
@jwfearnถอดความส่วนสำคัญของวิดีโอ:
export GOPATH="${HOME}/gocode"; export PATH="${PATH}:${GOPATH}/bin"; mkdir -p "${GOPATH}"
ฉันพบว่าทำง่ายกว่านี้:
export GOROOT=$HOME/go
export GOPATH=$GOROOT/bin
export PATH=$PATH:$GOPATH
สำหรับ MAC มันใช้งานได้ดีสำหรับฉัน
sudo nano /etc/bashrc
และเพิ่มด้านล่างในตอนท้ายของไฟล์
export PATH=$PATH:/usr/local/opt/go/libexec/bin
export GOPATH=/usr/local/opt/go/bin
สิ่งนี้ควรแก้ไขปัญหา ลองเปิดเทอร์มินัลใหม่และ echo $ GOPATH คุณควรเห็นค่าที่ถูกต้อง
(สำหรับ MAC)
ฉันลองคำตอบทั้งหมดเหล่านี้และด้วยเหตุผลบางอย่างที่ยังไม่ทราบสาเหตุก็ไม่ได้ผล
ฉันต้อง "บังคับให้ฟีด" GOPATH โดยการตั้งค่าตัวแปรสภาพแวดล้อมสำหรับทุกคำสั่งที่จำเป็น ตัวอย่างเช่น:
sudo env GOPATH=$HOME/goWorkDirectory go build ...
แม้แต่glide
ทำให้ฉันมีGOPATH not set
ข้อผิดพลาด แก้ไขอีกครั้งโดย "บังคับให้อาหาร": ฉันลองคำตอบทั้งหมดเหล่านี้และด้วยเหตุผลบางอย่างที่ยังไม่ทราบสาเหตุพวกมันไม่ทำงาน
ฉันต้อง "บังคับให้ฟีด" GOPATH โดยการตั้งค่าตัวแปรสภาพแวดล้อมสำหรับทุกคำสั่งที่ต้องการ
sudo env GOPATH=$HOME/goWorkDirectory glide install
หวังว่านี่จะช่วยใครซักคน
คุณ$GOROOT
ไม่ควรตั้งค่า คุณ$GOPATH
ควรตั้งค่า$HOME/go
โดยการพิมพ์export $GOPATH=$HOME/go
โปรดพิมพ์export GOROOT=""
เพื่อแก้ไขปัญหาของคุณ
export GOPATH="/whatever/you/like/your/GOPATH/to/be"
เพียงแค่ทำ
หากคุณพบปัญหานี้หลังจาก$GOPATH
ตั้งค่าอาจเป็นเพราะคุณใช้งานกับเชลล์ที่ไม่รองรับ ฉันใช้งานอยู่fish
และมันใช้งานไม่ได้เปิดใช้bash
งานได้ดี
คุณสามารถใช้โซลูชัน "ส่งออก" เหมือนกับที่คนอื่นแนะนำ ฉันต้องการมอบโซลูชันอื่นให้กับคุณเพื่อความสะดวกถาวร: คุณสามารถใช้เส้นทางใดก็ได้เป็น GOPATH เมื่อเรียกใช้คำสั่ง Go
ประการแรกคุณต้องดาวน์โหลดเครื่องมือขนาดเล็กชื่อgost
: https://github.com/byte16/gost/releases หากคุณใช้ ubuntu คุณสามารถดาวน์โหลดรุ่น linux ( https://github.com/byte16/gost/releases/download/v0.1.0/gost_linux_amd64.tar.gz )
จากนั้นคุณต้องเรียกใช้คำสั่งด้านล่างเพื่อแกะกล่องออก:
$ cd /path/to/your/download/directory
$ tar -xvf gost_linux_amd64.tar.gz
gost
คุณจะได้รับการปฏิบัติการ คุณสามารถย้ายไปไว้เพื่อ/usr/local/bin
ความสะดวกในการใช้งาน:
$ sudo mv gost /usr/local/bin
เรียกใช้คำสั่งด้านล่างเพื่อเพิ่มเส้นทางที่คุณต้องการใช้เป็น GOPATH ลงในpathspace gost
รักษา มันจะต้องให้ชื่อเส้นทางที่คุณจะใช้ในภายหลัง
$ gost add foo /home/foobar/bar # 'foo' is the name and '/home/foobar/bar' is the path
เรียกใช้คำสั่งไปที่คุณต้องการในรูปแบบ:
gost goCommand [-p {pathName}] -- [goFlags...] [goArgs...]
ตัวอย่างเช่นคุณต้องการเรียกใช้go get github.com/go-sql-driver/mysql
ด้วย/home/foobar/bar
GOPATH เพียงทำตามด้านล่าง:
$ gost get -p foo -- github.com/go-sql-driver/mysql # 'foo' is the name you give to the path above.
มันจะช่วยให้คุณตั้งค่า GOPATH และเรียกใช้คำสั่ง แต่จำไว้ว่าคุณได้เพิ่มเส้นทางเข้าgost
's pathspace หากคุณอยู่ภายใต้ไดเรกทอรีย่อยทุกระดับ/home/foobar/bar
คุณสามารถเรียกใช้คำสั่งด้านล่างซึ่งจะทำสิ่งเดียวกันสั้น ๆ :
$ gost get -- github.com/go-sql-driver/mysql
gost
เป็น Simple Tool of Go ซึ่งสามารถช่วยคุณจัดการ GOPATH และเรียกใช้คำสั่ง Go สำหรับรายละเอียดเพิ่มเติมเกี่ยวกับวิธีใช้เพื่อเรียกใช้คำสั่ง Go อื่น ๆ คุณสามารถเรียกgost help goCmdName
ใช้ได้ ตัวอย่างเช่นคุณต้องการทราบข้อมูลเพิ่มเติมเกี่ยวกับinstall
เพียงพิมพ์คำด้านล่างใน:
$ gost help install
คุณสามารถค้นหารายละเอียดเพิ่มเติมได้ใน README ของโครงการ: https://github.com/byte16/gost/blob/master/README.md
เรียกใช้ 'go env' และดูว่า GOPATH ของคุณชี้ไปที่ใด หากคุณเปลี่ยนไปที่ไดเรกทอรีนั้นคำสั่ง 'go get..etc' ของคุณจะทำงานได้
ปัญหานี้เกิดขึ้นกับฉันในราสเบอร์รี่ปี่ ฉันลงชื่อเข้าใช้ผ่านไคลเอนต์ VNC ปัญหายังคงมีอยู่แม้จะมีการตั้งค่าและส่งออก GOPATH จากนั้นรันคำสั่ง "go get" โดยไม่มี sudo และทำงานได้อย่างสมบูรณ์
ฉันต้องเรียกใช้แอปพลิเคชันในฐานะรูท (เพื่อเปิดเว็บเซิร์ฟเวอร์บนพอร์ต 80) สิ่งนี้ทำให้เกิดข้อผิดพลาดสำหรับฉันเนื่องจากผู้ใช้ sudo มีสภาพแวดล้อมที่แตกต่างจากผู้ใช้ปกติดังนั้น GOPATH จึงไม่ได้ตั้งค่า
หากบุคคลอื่นประสบปัญหานี้ให้เพิ่ม-E
คำสั่งสิ่งนี้จะรักษาสภาพแวดล้อมของผู้ใช้
sudo -E go run main.go
สำหรับข่าวสารเพิ่มเติมดูการสนทนาได้ที่นี่: Google Groups - ปัญหา GOPATH