Cách lấy tất cả các tệp phụ thuộc cho một chương trình bằng Golang


90

Tôi tạo một chương trình bằng golang và sau khi hoàn thành mã, nếu tôi muốn chạy mã này trên máy tính hoặc máy ảo khác, thì nó không nhận được tất cả các tệp gói phụ thuộc. làm thế nào tôi có thể lấy tất cả các tệp phụ thuộc?

go 

Câu trả lời:


10

Bạn có thể sử dụng godep savetrong máy tính cục bộ nơi bạn hoàn thành chương trình của mình. godep save thu thập tất cả các tệp phụ thuộc cho bạn. Khi bạn chuyển sang máy tính khác, chỉ cần sao chép thư mục Godep với mã của bạn và nó sẽ giải quyết vấn đề của bạn.


7
Có lẽ điều đó là rõ ràng đối với một số người, nhưng tôi phải đi tìm hiểu điều này. Hóa ra bạn cần cài đặt gói Godep hoặc dep để Go. Github stie cho điều này ở đây: github.com/tools/godep
Patratacus

212

Bạn có thể chạy go get -d ./...từ một thư mục của dự án của mình để tải xuống tất cả các phần phụ thuộc của go-gettable.
Hoặc sao chép tất cả srcthư mục con từ GOPATH của bạn sang máy đích.
...là một mẫu đặc biệt, được yêu cầu đi xuống một cách đệ quy.


1
Nếu tôi cần chạy / sửa đổi mã thì nó không tìm thấy các gói.

1
Tôi biết tôi có thể tải các gói bằng cách truy cập <package> nhưng rất tốn thời gian và khó khăn khi chương trình sử dụng nhiều gói.

3
-t sẽ cài đặt cũng phụ thuộc kiểm tra
honzajde

3
@AlbertoSchiabel ...là một mẫu đặc biệt. Nó yêu cầu đi xuống một cách đệ quy. Tôi đã cập nhật câu trả lời
RoninDev

Cảm ơn @RoninDev! Lúc đầu, tôi định chỉnh sửa câu trả lời của bạn ./., bởi vì sau khi bạn thử lệnh trên máy tính của tôi, nó hơi bị kẹt (và bây giờ tôi biết tại sao, vì tìm kiếm đệ quy các tệp go có thể khá tốn kém), nhưng sau đó tôi nhận ra nó tốt hơn để hỏi trước. Cảm ơn!
Alberto Schiabel

51

Thử

go list -f '{{ join .Imports "\n" }}'

hoặc là

go list -f '{{ join .Deps "\n" }}'

Phần thứ hai sẽ liệt kê tất cả các gói phụ thuộc, phần thứ nhất chỉ các gói được nhập trực tiếp.


22

Lệnh dưới đây hoạt động đối với tôi, nó tải xuống tất cả các phụ thuộc.

go get -u -v -f all

Phải mất một thời gian dài !!! nó tải xuống các gói mà tôi chưa bao giờ sử dụng trong dự án!
Yuseferi
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.