如何从头开始导入外部包?
我在Go中编写了一个库包并测试通过github进行分发。我正在关注http://golang.org/doc/code.html并使用mac但收到错误消息
cmd我放的是以下。
$ mkdir $HOME/go
$ export GOPATH=$HOME/go
$ export PATH=$PATH:$GOPATH/bin
$ mkdir -p $GOPATH/src/github.com/user
$ mkdir $GOPATH/src/github.com/user/project
然后我把
$ go get github.com/user/project
go install仍有错误
can't load package: package github.com/golingorg/goling: no Go source files in /Users/user_name/go/src/github.com/user/project
我不明白为什么我们需要文件来导入Go中的外部包。外部包意味着我从外部包中获取并创建文件。
我的问题是如何从头开始导入外部包。大多数文件只是说类似的东西
go get github.com/yasushi-saito/fifo_queue
这给了我“$ GOPATH没有设置。”作为初学者,我正在为“go get”工作设置环境感到沮丧。非常感谢提前。
摘要
How do I import an external package from scratch?
Go是一种静态类型语言,因此它需要在编译时解析对外部包的任何引用。 “go”工具期望外部包的源在本地可访问的路径中,因此您需要使用“go get”来下载它们。
根据你的描述,你可能没有设置GOPATH。使用ECHO $ GOPATH检查是否设置正确。
对于我的GO项目,我通常使用GOPATH作为工作空间,类似于Python中的virtualenv或Ruby中的rbenv / rvm。假设我的项目“myproject”在/ projects / myproject有根,我的源文件将位于/ projects / myproject / src / myproject,并且导入了“github.com/user/project”,然后
> cd /projects/myproject
> export GOPATH=`pwd` # or export GOPATH=/projects/myproject
> go get github.com/user/project
在“go get”命令之后,“github.com/user/project”的源将被下载到/projects/myproject/src/github.com/user/project。
当你使用“go build”或“go install”时,它将编译为外部包在$ GOPATH / src文件夹中。
如果在默认文件夹中安装Go,则需要在PATH环境变量中包含Go installed bin文件夹。之后,GOPATH是另一个环境变量,你需要“go”工具才能工作。
这就是我做的方式:
1.首先设置工作区
mkdir $HOME/go
export GOPATH=$HOME/go
export PATH=$PATH:$GOPATH/bin
2.创建项目
mkdir -p $GOPATH/src/github.com/user
mkdir $GOPATH/src/github.com/user/hello
touch $GOPATH/src/github.com/user/hello/hello.go
3.安装它
go install github.com/user/hello
4.运行它
cd $GOPATH/bin
./hello
我使用了以下流浪者形象:https://github.com/dcoxall/vagrant-golang
从go get
的帮助输出中,它说:
默认情况下,get使用网络检出丢失的包,但不使用它来查找现有包的更新。
在运行$GOPATH/src/github.com/user/project
之前创建go get
目录时,它假定已经下载了包,因此跳过尝试构建和安装包的步骤。失败的原因是该目录不包含Go源文件。
因此,简单的解决方法是不创建与您尝试下载的软件包关联的文件夹:go get
将为您完成此操作。