在导入之前我必须有文件是没有意义的

问题描述 投票:2回答:3

如何从头开始导入外部包?

我在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?
github go install package
3个回答
5
投票

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”工具才能工作。


5
投票

这就是我做的方式:

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


2
投票

go get的帮助输出中,它说:

默认情况下,get使用网络检出丢失的包,但不使用它来查找现有包的更新。

在运行$GOPATH/src/github.com/user/project之前创建go get目录时,它假定已经下载了包,因此跳过尝试构建和安装包的步骤。失败的原因是该目录不包含Go源文件。

因此,简单的解决方法是不创建与您尝试下载的软件包关联的文件夹:go get将为您完成此操作。

© www.soinside.com 2019 - 2024. All rights reserved.