Як отримати всі файли залежностей для програми за допомогою Golang


90

Я роблю програму в golang, і після заповнення коду, якщо я хочу запустити цей код на іншому ПК або віртуальній машині, тоді вона не отримує всіх файлів пакунків залежностей. як я можу отримати всі файли залежностей?

go 

Відповіді:


10

Ви можете використовувати godep saveна своєму локальному ПК, де ви закінчуєте програму. godep save збирає всі файли залежностей для вас. Коли ви перейдете на інший ПК, просто скопіюйте папку Godep зі своїм кодом, і це вирішить ваші проблеми.


7
Можливо, це очевидно для деяких людей, але мені довелося піти розкопувати це. Виявляється, вам потрібно встановити пакет godep або dep на Go. Захист Github за це тут: github.com/tools/godep
Patratacus

212

Ви можете запустити go get -d ./...каталог вашого проекту, щоб завантажити всі залежності, які можна отримати.
Або скопіюйте весь srcпідкаталог зі свого GOPATH на машину призначення.
...є особливим візерунком, що говорить про рекурсивне зниження.


1
Якщо мені потрібно запустити / змінити код, він не знаходить пакетів.

1
Я знаю, що я можу отримати пакети за допомогою go get <package>, але це так багато часу і важко, коли програма використовує багато пакетів.

3
-t встановить також тестові залежності
honzajde

3
@AlbertoSchiabel ...- це особливий шаблон. Він говорить, щоб рекурсивно йти вниз. Я оновив відповідь
RoninDev

Дякую @RoninDev! Спочатку я збирався відредагувати вашу відповідь ./., тому що після спроби команди на моєму ПК вона застрягла (і тепер я знаю чому, оскільки рекурсивний пошук файлів go може бути досить дорогим), але потім я зрозумів, що це було краще запитати спочатку. Дякую!
Альберто Скіабель,

51

Спробуйте

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

або

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

У другому будуть перелічені всі підзалежності, у першому - лише безпосередньо імпортовані пакунки.


22

Команда нижче працює для мене, вона завантажує всі залежності.

go get -u -v -f all

це займає багато часу !!! він завантажує пакети, які я ніколи не використовував у проекті!
Юсефері
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.