我可以拥有多个GOPATH目录吗?

时间:2016-03-15 17:07:05

标签: go

我将我的GOPATH设置为

func_reference

我有

def my_filter(cell):
    if cell[-1] == ']':
        return cell
    return cell + ']'

filtered_df = df.applymap(my_filter)

以及

/Users/me/dev/go

我不喜欢在我的root dev文件夹中我不得不拥有这个包含许多不同客户端项目的通用“go”目录。

3 个答案:

答案 0 :(得分:43)

是的,GOPATH是一个目录列表(如PATH)。有关详细信息,请运行go help gopath。例如,在Linux上,我有:

$ go env
GOROOT="/home/peter/go"
GOPATH="/home/peter/gopath:/home/peter/public/gopath"
$

我在Windows上有类似的东西。

注意:Linux使用:作为GOPATH列表分隔符; Windows使用;作为分隔符。

如果您使用go get,它将默认为列表中的第一个目录。

运行go env以检查一切是否正确。

答案 1 :(得分:13)

This blog post给出了一个很好的解释,说明如何以及为什么要在GOPATH中设置多个值,特别是当它说:

  

我的GOPATH包含3个文件夹或GOPATH工作区。

     

第一个是我的登陆工作区。由于它首先列出,每当我获得任何新包时,它总是在这个工作区中结束。

     

Go搜索GOPATH中列出的每个目录以查找源代码,但新包始终下载到列表中的第一个目录中。   我规定永远不要在那里进行任何开发,所以每当它变得太大时清理这个文件夹总是完全安全的(使用我不使用的Go包)。毕竟,它只有Go包,我可以再次使用go get。

     

我的第二个工作区适用于所有我的个人Go包以及我可能想要“喜欢”或进行一些开发的任何其他包。我将我经常使用的东西从第一个工作区移到第二个工作区。

     

我的第三个工作区专门用于我工作中的私有Go包及其依赖项。将我的工作包与我的所有个人资料分开是很方便的,所以他们不会互相帮助。

答案 2 :(得分:12)

引用Go本身:

$ go help gopath
  

Go路径用于解析import语句。   它由go / build包实现并记录。

     

GOPATH环境变量列出了寻找Go代码的位置   在Unix上,该值是以冒号分隔的字符串   在Windows上,该值是以分号分隔的字符串   在计划9中,值是一个列表。

     

必须将GOPATH设置为获取,构建和安装包之外的包   标准的Go树。

     

GOPATH中列出的每个目录都必须具有规定的结构:

     

src目录包含源代码。 src下面的路径   确定导入路径或可执行文件名称。

     

...