Go/golang:解決依賴包模塊安裝問題


Go對於初學有2大問題:

1 是依賴的安裝 

2 gopath內的目錄結構的處理,因為go依賴的路徑問題,絕對相對路徑,所以這點要很小心處理

 

最近在學習Go編寫后端服務,先放出謝大的書鎮樓:

https://github.com/astaxie/build-web-application-with-golang/blob/master/zh/preface.md

學習Go的人,第一個要解決的問題,就是安裝依賴,也就是我們用的go get命令,由於你懂得原因,Go安裝依賴總是timeout(獲取超時),就算掛公司的vpn也不行,說個實在話:golang官網都上不去你還想安裝依賴??

國內網絡是可以訪問github.com的,那么用github.com代替golang.org呢?舉個栗子:

go get github.com/micro/micro

我敢保證,不是每次都行得通,有時也timeout,為啥,因為我試過!

后來我去看了這篇文章還有其他文章,結合謝大的書,總結了兩個個解決方案:

https://www.imooc.com/article/45820

方案一:gopm,缺點:慢!優點:自動!

方案二:github.com clone(或者網頁下載)+ src +go install

先跟大家說個知識:

1.會涉及go path和go get的原理,這個自己去看謝大的書,例如我的電腦是mac mini,那么我的默認go工作目錄就是:/users/用戶名/go,其他不多說

2.我們的依賴通常放在 go/src里 (這里的go就是上一行的go路徑,下同),我們進到這個目錄里,在有.go文件的地方,執行go install ,golang就會把src的 .go 編譯成包文件 .a文件,放到同等目錄的go/src中,就是把包文件的目錄放得跟src的一樣,只是src改為pkg

3.代碼

import (
    "github.com/micro/go-micro"
)

上面的不要以為是會去github.com下載依賴,如果是的話我們還有手動go get獲取依賴干嘛?

好,下面拿我上面要安裝的依賴來試試

go get github.com/micro/micro

我們全程都不必用到 go get 

1.去github找到micro的倉庫,下載micro,注意放到 go/src/github.com/micro  (注意,因為下載的micro里還有個叫micro的文件夾,所以名字會叫micro/micro)

2.去到micro 里執行install,不同機器報錯不同,例如我的機器缺少的文件數量比較少,結果如下:

我是用vscode哈

好的,這時我們看得出缺了crypto的包,並且是src的而不是pkg的,因此只需要下載源碼放到src就好,而不用go install,那我們就愉快的去github.com下載它的源碼吧!

 

怎么找?

 

github搜索 crypto

把里面整個下載下來,迅雷下載可以提速,放到src對應路徑(一般github的路徑如下:github.com/作者github名/倉庫名/具體go文件),需要包時執行install,這個過程要重復幾次,直到收到下完所有的包

 

 

順便提一句,由於包依賴太多,樓主已吐血

 

2019.04.03更新

最近我探索到一種方式,不用開vpn的

首先看問題,如果少源碼,也就是第1.個,就Github找源碼下載放到src相應的目錄中,如果少包,也就是第2.個,不但要下載源碼放到src中,還要去到相應目錄執行go install,但是這樣效率吐血,因為通常a依賴b,b依賴c,c依賴e f g......翻桌子啊!!!

如何解決,就是直接到 項目的根目錄里 先執行go get,效果和nodejs 執行npm install差不多,完了后,get不了的包(一般github都get得下來,就是golang.org或者google網站的包或者說源碼get不下來,那么你就去github搜索包在github的鏡像,手動下載按照前面說的做,放到相應目錄,需要時執行go install,這樣最快,gopm慢到吐血)

1.

cannot find package "github.com/..." in any of:
        E:\Go\src\github.com...

2.

cannot find package "github.com/..." in any of:
        K:\go\pkg\github.com\...

 


免責聲明!

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



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