Cannot set $GOPATH on Mac OSX
Solution 1
Update, as of Go 1.8: If you're installing Go 1.8 (released: Feb 2017) or later, GOPATH is automatically determined by the Go toolchain for you.
It defaults to $HOME/go
on macOS (nee OS X) - e.g. /Users/matt/go/
. This makes getting started with Go even easier, and you can go get <package>
right after installing Go.
For the shell: (the manual method)
~/.bash_profile should contain export GOPATH=$HOME/go
and also export PATH=$GOPATH/bin:$PATH
. The use of the $
is important: make sure to note where I've used it (and where I have not).
For Sublime Text:
Sublime Text menu > Preferences > Package Settings > GoSublime > Settings: User
{
"shell": ["/bin/bash"],
"env": {"GOPATH": "/Users/#USERNAME#/go/"},
}
Make sure your GOPATH
is not set to the full path of the package; just the root of your go
folder where src, pkg, and bin
reside. If you're not using GoSublime, I'd suggest installing that first.
Solution 2
The accepted answer didn't work for me. I investigated and found the cause: I am using zsh, not bash.
I need to add the following two lines to ~/.zshrc
:
export GOPATH=/Users/username/go
export PATH=$GOPATH/bin:$PATH
Solution 3
You don't put the $
prefix on a variable when you're assigning it, only when you're reading it.
export GOPATH=$HOME
To make this permanent, put the command in your .bash_profile
.
That will work for Terminal shells. If you need to set environment variables that will affect GUI applications, see Environment variables in Mac OS X
Solution 4
1) Download and install Go tools https://golang.org/doc/install
2) Setup Go workspace
mkdir $HOME/go
cd $HOME/go
mkdir bin pkg src
3) Setup Go environment
sudo vi ~/.bash_profile
export GOPATH=$HOME/go
PATH=$PATH:$GOPATH/bin
Test by creating, building and running a Go project
mkdir $GOPATH/src/github.com/todsul/hello
touch $GOPATH/src/github.com/todsul/hello/hello.go
go install
hello
Solution 5
The http://www.golang-book.com/guides/machine_setup#osx
only has instructions for setting the path on ~/.bashrc
, not ~/.bash_profile
which thanks to this thread was able to get my example file to build.
export GOPATH=$HOME
export PATH=$PATH:$GOPATH/bin
Other Mac users need to add the above to their ~/.bash_profile
.
Comments
-
sergserg almost 2 years
I'm trying to set my
$GOPATH
variable to run some example code on my machine:$ smitego-example go run main.go main.go:5:2: cannot find package "github.com/#GITHUB_USERNAME#/smitego" in any of: /usr/local/go/src/pkg/github.com/#GITHUB_USERNAME#/smitego (from $GOROOT) ($GOPATH not set) $ smitego-example export $GOPATH=$HOME -bash: export: `=/Users/#OSX_USERNAME#': not a valid identifier
Contents of
github.com/#GITHUB_USERNAME#/smitego/smitego.go
:package smitego
How can I set my
GOPATH
so it works always and forever? -
Nurbol over 10 yearsOn OS X and using Sublime might the user have to use launchctl? I'm not sure .bash_profile would matter for GUI apps. So might need to do: launchctl setenv GOPATH=/path/to/home, and to make it last between boots add that to /etc/launchd.conf
-
sergserg over 10 yearsThanks! I learned something new today. However, now I'm getting:
cannot find package "github.com/sergiotapia/smitego" in any of: / /usr/local/go/src/pkg/github.com/sergiotapia/smitego /Users/sergiotapia/src/github.com/sergiotapia/smitego
. Any ideas? -
Barmar over 10 yearsI don't know anything about
go
, so I can't help you with that part of it. My answer just shows the proper way to set environment variables; figuring out what you're supposed to set it to is a separate problem. -
Nurbol over 10 years@Serg does 'go build' work from the command line after modifying your .bash_profile and sourcing it/reloading the shell?
-
Nurbol over 10 yearswhat is the output of 'echo $GOPATH' ?
-
Barmar over 10 yearscan you take this discussion out of the comments on my answer? I don't wish to be notified of all these questions.
-
sergserg over 10 years@powerj1984: Output is: /Users/sergiotapia
-
tidwall over 9 years
/usr/bin/bash
is usually/bin/bash
on Mac or Linux. -
Caleb almost 9 yearsThis guide now uses a program I wrote (github.com/badgerodon/penv) which saves environment variables for OSX using launchctl (github.com/badgerodon/penv/blob/master/darwin_dao.go). AFAIK this is the only way to set environment variables reliably in OSX.
-
Maniankara about 6 yearsHa ha :) this should have been the correct answer though.
-
jnovack over 5 yearsHeavily advice against this, your
GOPATH
IS your home directory. I (and many other comments) recommend settingGOPATH
to$HOME/go
-
pim over 5 yearsThis is the best answer IMHO. I followed it verbatim and I was immediately writing go code.
-
Hank Moody about 5 yearsIs "sudo vi ~/.bash_profile" creating a new .bash_profile file? If yes then where this file should be created exactly?
-
Hom Bahrani over 4 yearsit will create it in the root directory. Note if you are using Oh My Zsh then you will have to add the go paths (step 3) to your
.zshrc
instead and then runsource .zshrc
if you want the changes to take effect without closing your terminal. Also you dont have to use vi ~/.bash_profile, you can open the file in atom or nano text editors as well -
Poat about 4 yearsthis answer got me going! i'm getting back into mac development from doing windows 24/7 - so haven't used vim before - this helped, commandlinemac.blogspot.com/2008/12/vim.html
-
Michael over 3 yearsin case this helps anyone if you install go via homebrew then the path will be like this:
export PATH=/usr/local/opt/[email protected]/bin:$PATH
(obviously update the version based on whatever you install) -
Ali Havasi over 2 yearsI had the same issue. Thanks.
-
David over 2 yearsWorked for me Big Sur M1, thanks :)