我的$ GOPATH是
"/Users/peter/goworkspace"
我当前的golang版本:
go version go1.6 darwin/amd64
我在这个工作区下有多个golang项目,所以这是目录的结构
+/goworkspace +---/bin +---/pkg +---/src +---/project1 +---package1 +---file1.go +---file2.go +---file3.go +---package2 +---package3 +---main.go +---/project2 +---/project3
在proj1的main.go中,我将使用该项目下其他软件包的导入,如下所示:
import( "./package1" "./package2" "./package3" )
但是,当我运行“ go build”时,我一直在收到错误消息: “ 无法加载包:非本地包中的本地导入“ ../package”
如果我不想使用相对的包路径,例如使用它:
import( "project1/package1" "project1/package2" "project1/package3" )
然后一切都会正常。
如果使用相对包路径,我的代码有什么问题? 如果将来将project1的名称更改为例如projecet1v2,则导入软件包的最佳实践是什么? 那我需要手动更新导入的软件包的名称吗?
规则1:请勿使用相对进口。这(部分)是您遇到问题的原因。阅读以下内容:https : //golang.org/doc/code.html#Library
使用完全限定的导入路径(如您所示):
import( "project1/package1" "project1/package2" "project1/package3" // Or ideally, so others can access it in the future: "github.com/<yourusername>/project1/package4" )
如果出于某种原因要对软件包进行版本控制,则可以: