无法在 Mac OSX 上设置 $GOPATH
Posted
技术标签:
【中文标题】无法在 Mac OSX 上设置 $GOPATH【英文标题】:Cannot set $GOPATH on Mac OSX 【发布时间】:2014-02-25 06:50:27 【问题描述】:我正在尝试设置我的 $GOPATH
变量以在我的机器上运行一些示例代码:
$ 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
github.com/#GITHUB_USERNAME#/smitego/smitego.go
的内容:
package smitego
如何设置我的GOPATH
使其始终有效?
【问题讨论】:
【参考方案1】:从 Go 1.8 开始更新:如果您要安装 Go 1.8(发布时间:2017 年 2 月)或更高版本,Go 工具链为您提供的 GOPATH 是 automatically determined。
在 macOS (nee OS X) 上默认为 $HOME/go
- 例如/Users/matt/go/
。这使得 Go 入门变得更加容易,您可以在安装 Go 后立即go get <package>
。
对于外壳:(手动方法)
~/.bash_profile 应该包含export GOPATH=$HOME/go
和export PATH=$GOPATH/bin:$PATH
。 $
的使用很重要:请务必记下我在哪里使用过它(以及我没有在哪里使用过)。
对于崇高文本:
Sublime Text 菜单 > 首选项 > 包设置 > GoSublime > 设置:用户
"shell": ["/bin/bash"],
"env": "GOPATH": "/Users/#USERNAME#/go/",
确保您的GOPATH
未设置为包的完整路径;只是src, pkg, and bin
所在的go
文件夹的根目录。如果你不使用GoSublime,我建议先安装它。
【讨论】:
/usr/bin/bash
在 Mac 或 Linux 上通常是 /bin/bash
。
如果您通过自制软件安装 go,如果这对任何人都有帮助,那么路径将如下所示:export PATH=/usr/local/opt/go@1.12/bin:$PATH
(显然根据您安装的任何内容更新版本)【参考方案2】:
接受的答案对我不起作用。我调查发现原因:我使用的是zsh,而不是bash。
我需要将以下两行添加到~/.zshrc
:
export GOPATH=/Users/username/go
export PATH=$GOPATH/bin:$PATH
【讨论】:
我遇到了同样的问题。谢谢。【参考方案3】:在分配变量时不要将$
前缀放在变量上,只有在读取时才可以。
export GOPATH=$HOME
要使其永久化,请将命令放入您的.bash_profile
。
这适用于终端外壳。如果需要设置会影响GUI应用的环境变量,见Environment variables in Mac OS X
【讨论】:
在 OS X 和使用 Sublime 上,用户可能必须使用 launchctl 吗?我不确定 .bash_profile 对 GUI 应用程序是否重要。所以可能需要这样做:launchctl setenv GOPATH=/path/to/home,并使其在两次启动之间持续添加到 /etc/launchd.conf 谢谢!我今天学了些新东西。但是,现在我得到: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
。有什么想法吗?
我对@987654326@一无所知,所以我无法帮助您解决这部分问题。我的回答只是显示了设置环境变量的正确方法;弄清楚你应该把它设置成什么是一个单独的问题。
@Serg 在修改您的 .bash_profile 并获取它/重新加载 shell 后是否从命令行“开始构建”工作?
你能把这个讨论从我的回答中剔除吗?我不希望收到所有这些问题的通知。【参考方案4】:
1) 下载并安装 Go 工具 https://golang.org/doc/install
2) 设置 Go 工作区
mkdir $HOME/go
cd $HOME/go
mkdir bin pkg src
3) 设置 Go 环境
sudo vi ~/.bash_profile
export GOPATH=$HOME/go
PATH=$PATH:$GOPATH/bin
通过创建、构建和运行 Go 项目进行测试
mkdir $GOPATH/src/github.com/todsul/hello
touch $GOPATH/src/github.com/todsul/hello/hello.go
go install
hello
【讨论】:
这是最好的答案恕我直言。我一字不差地跟着它写了代码。 “sudo vi ~/.bash_profile”是否创建了一个新的 .bash_profile 文件?如果是,那么这个文件应该在哪里创建? 它将在根目录中创建它。请注意,如果您使用的是 Oh My Zsh,那么您必须将 go 路径(步骤 3)添加到您的.zshrc
,然后运行 source .zshrc
,如果您希望更改在不关闭终端的情况下生效。此外,您不必使用 vi ~/.bash_profile,您也可以在 atom 或 nano 文本编辑器中打开文件
这个答案让我走了!我正在从 24/7 的 Windows 中重新开始 Mac 开发 - 所以以前没有使用过 vim - 这有帮助,commandlinemac.blogspot.com/2008/12/vim.html【参考方案5】:
http://www.golang-book.com/guides/machine_setup#osx
只有在~/.bashrc
上设置路径的说明,而不是~/.bash_profile
上的说明,这要归功于这个线程能够让我的示例文件构建。
export GOPATH=$HOME
export PATH=$PATH:$GOPATH/bin
其他 Mac 用户需要将以上内容添加到他们的~/.bash_profile
。
【讨论】:
本指南现在使用我编写的一个程序 (github.com/badgerodon/penv),它使用 launchctl (github.com/badgerodon/penv/blob/master/darwin_dao.go) 为 OSX 保存环境变量。 AFAIK 这是在 OSX 中可靠地设置环境变量的唯一方法。 强烈建议不要这样做,你的GOPATH
是你的主目录。我(和许多其他 cmets)建议将 GOPATH
设置为 $HOME/go
【参考方案6】:
使用 brew 或 package 安装 go 后,这解决了我的问题:
export GOROOT="/usr/local/go"
export GOPATH="$HOME/Documents/goWorkSpace"
export PATH="$HOME/Documents/goWorkSpace/bin:$PATH"
【讨论】:
为我工作 Big Sur M1,谢谢 :)【参考方案7】:在 macOS High Sierra 版本 10.3.3 上,Go[go 版本 go1.10.1 darwin/amd64] 安装在此处:
在 :~/.bashrc 上添加了以下内容
export GOPATH=/usr/local/go
export PATH=$PATH:$GOPATH/bin
然后开始工作
【讨论】:
【参考方案8】:使用最新 Mac 及 Catalina 版本以上的人, 你们需要更新 .zshrc 文件而不是 .bash。
将以下两行添加到 ~/.zshrc:
导出 GOPATH=/Users/username/go
导出 PATH=$GOPATH/bin:$PATH
它应该工作。!!
这在不久前得到了更改,请参阅下面的链接以了解为什么 .zshrc 而不是 .bash_profile https://eshop.macsales.com/blog/56921-moving-from-bash-to-zsh-terminal-changes-in-macos-catalina/
【讨论】:
以上是关于无法在 Mac OSX 上设置 $GOPATH的主要内容,如果未能解决你的问题,请参考以下文章
phpmyadmin 在初始安装时无法登录(mac osx)