Cannot set $GOPATH on Mac OSX

114,239

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.

Share:
114,239
sergserg
Author by

sergserg

sergserg

Updated on July 05, 2022

Comments

  • sergserg
    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
    

    enter image description here

    Contents of github.com/#GITHUB_USERNAME#/smitego/smitego.go:

    package smitego
    

    How can I set my GOPATH so it works always and forever?

  • Nurbol
    Nurbol over 10 years
    On 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
    sergserg over 10 years
    Thanks! 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
    Barmar over 10 years
    I 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
    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
    Nurbol over 10 years
    what is the output of 'echo $GOPATH' ?
  • Barmar
    Barmar over 10 years
    can you take this discussion out of the comments on my answer? I don't wish to be notified of all these questions.
  • sergserg
    sergserg over 10 years
    @powerj1984: Output is: /Users/sergiotapia
  • tidwall
    tidwall over 9 years
    /usr/bin/bash is usually /bin/bash on Mac or Linux.
  • Caleb
    Caleb almost 9 years
    This 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
    Maniankara about 6 years
    Ha ha :) this should have been the correct answer though.
  • jnovack
    jnovack over 5 years
    Heavily advice against this, your GOPATH IS your home directory. I (and many other comments) recommend setting GOPATH to $HOME/go
  • pim
    pim over 5 years
    This is the best answer IMHO. I followed it verbatim and I was immediately writing go code.
  • Hank Moody
    Hank Moody about 5 years
    Is "sudo vi ~/.bash_profile" creating a new .bash_profile file? If yes then where this file should be created exactly?
  • Hom Bahrani
    Hom Bahrani over 4 years
    it 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 run source .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
    Poat about 4 years
    this 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
    Michael over 3 years
    in 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
    Ali Havasi over 2 years
    I had the same issue. Thanks.
  • David
    David over 2 years
    Worked for me Big Sur M1, thanks :)