關於go get 以后下載的包不在src下而在pkg的源頭並且不可以import(Goland Modules模塊的使用)


原因:在使用go get命令后發現下載的包不在src目錄下生成,而全部到了$GOPATH$/pkg目錄下

 

在下面這個目錄下

 

 

 最主要是下載完后,import還報錯。

 

此時一頓baidu 猛如虎,終於找到原因所在:參考這篇文章:https://www.cnblogs.com/xiaowu54/p/14538238.html

備注:

官方在 v1.11 中加入了 Go Module 作為官方包管理形式,就這樣 dep 無奈的結束了使命。
最初的 Go Module 提案的名稱叫做 vgo,下面為了介紹簡稱為 gomod。不過在 v1.11 和 v1.12 的 Go 版本中 gomod 是不能直接使用的。
可以通過 go env 命令返回值的 GOMOD 字段是否為空來判斷是否已經開啟了 gomod,如果沒有開啟,可以通過設置環境變量
export GO111MODULE=on 開啟

我的版本為1.15.6, 所以出現了這種情況

Go mod 的正確使用

如何激活Modules

首先要把go升級到1.11及以上

升級后,可以設置通過一個環境變量GO111MODULE來激活modules:

GO111MODULE=off,go命令行將不會支持module功能,尋找依賴包的方式將會沿用舊版本那種通過vendor目錄或者GOPATH模式來查找。
GO111MODULE=on,go命令行會使用modules,而一點也不會去GOPATH目錄下查找。
GO111MODULE=auto,默認值,go命令行將會根據當前目錄來決定是否啟用module功能。這種情況下可以分為兩種情形:當前目錄在GOPATH/src之外且該目錄包含go.mod文件,或者當前文件在包含go.mod文件的目錄下面。
當module功能啟用時,GOPATH在項目構建過程中不再擔當import的角色,但它仍然存儲下載的依賴包,具體位置在$GOPATH/pkg/mod。

 

在你需要導入第三方包的地方,打開終端輸入go mod init 命名
然后在該文件夾會出現go.mod文件

比如打開我的代碼目錄---》cmd 命令,然后使用上述go mod init  github.com

 

 然后繼續使用go get導入包

 

 操作成功后,上一步動作的go mod 文件會記錄導入的包名稱及版本號,打開goland查看

 注意:上面已經使用過go mod init之后,以后每次導入包只需要進入工作區目錄,

第一步:輸入“cmd”。例如:

 

 

 第二步:在go項目工作區中直接使用go get命令

 

 

 

 第三步:然后查看是否在包管理器中

 

 

 

最后還要一步:別忘記配置Goland Modules模塊的使用

打開File--->Settings---->Go Modules(vgo)  ---->然后 Enable,並輸入proxy地址:https://goproxy.io

 

 最后發現包可用了。問題解決,顏色變綠了

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM