为了账号安全,请及时绑定邮箱和手机立即绑定

进行构建:“找不到包”(即使设置了GOPATH)

进行构建:“找不到包”(即使设置了GOPATH)

Go
MMTTMM 2021-05-13 18:27:59
即使GOPATH设置正确,我仍然无法“运行”或“运行”来找到自己的软件包。我究竟做错了什么?$ echo $GOROOT/usr/local/go$ echo $GOPATH/home/mitchell/go$ cat ~/main.gopackage mainimport "foobar"func main() { }$ cat /home/mitchell/go/src/foobar.gopackage foobar$ go build main.gomain.go:3:8: import "foobar": cannot find package
查看完整描述

3 回答

?
明月笑刀无情

TA贡献1828条经验 获得超4个赞

它不起作用,因为您的foobar.go源文件不在名为的目录中foobargo buildgo install尝试匹配目录,而不是源文件。

  1. 设置$GOPATH为有效目录,例如export GOPATH="$HOME/go"

  2. 移动foobar.go$GOPATH/src/foobar/foobar.go与建筑应该只是罚款。

建议的其他步骤:

  1. 添加$GOPATH/bin到您的$PATH依据:PATH="$GOPATH/bin:$PATH"

  2. 移至main.go的子文件夹$GOPATH/src,例如$GOPATH/src/test

  3. go install test现在应该在$GOPATH/bin其中创建一个可执行文件,可以通过test在终端中键入来调用该可执行文件。


查看完整回答
反对 回复 2021-05-24
?
偶然的你

TA贡献1841条经验 获得超3个赞

由于您的意思是GOPATH,请参阅fasmat的答案(已批准)


如“如何找回我的包裹? ”中所述,您需要将包裹xxx放在目录中xxx。


请参阅Go语言规范:


package math

一组共享相同文件的文件PackageName形成了包的实现。

一个实现可能要求包的所有源文件都驻留在同一目录中。


该代码组织提到:


在构建导入软件包“ widget”的程序时,该go命令会src/pkg/widget在Go根目录中查找,然后(如果在此处未找到软件包源)src/widget将按顺序在每个工作空间中进行搜索。


(“工作区”是您中的路径条目GOPATH:该变量可以引用多个路径以使您的“ src, bin, pkg”成为)


(原始答案)


您还应该将其设置GOPATH为〜/ go,而不是GOROOT,如“如何编写Go代码”中所示。


Go路径用于解析导入语句。它由go / build包实现并记录在文件中。


在GOPATH环境变量列表地方寻找Go代码。

在Unix上,该值是用冒号分隔的字符串。

在Windows上,该值为分号分隔的字符串。

在计划9中,该值是一个列表。


不同于GOROOT:


Go二进制发行版假定它们将被安装在Windows中/usr/local/go(或c:\Go在Windows下),但是可以将它们安装在其他位置。

如果这样做,则GOROOT在使用Go工具时,需要将环境变量设置为该目录。


查看完整回答
反对 回复 2021-05-24
  • 3 回答
  • 0 关注
  • 337 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信