Как получить все файлы зависимостей для программы с помощью Golang


91

Я делаю программу на golang, и после завершения кода, если я хочу запустить этот код на другом компьютере или виртуальной машине, тогда он не получает все файлы пакетов зависимостей. как я могу получить все файлы зависимостей?

go 

Ответы:


9

Вы можете использовать godep saveна своем локальном компьютере, где вы завершаете свою программу. godep save соберет для вас все файлы зависимостей. Когда вы переходите на другой компьютер, просто скопируйте папку Godep с вашим кодом, и это решит ваши проблемы.


7
Может быть, для кого-то это очевидно, но мне пришлось это раскопать. Оказывается, вам нужно установить пакет godep или dep для Go. Стиль Github для этого находится здесь: github.com/tools/godep
Patratacus

218

Вы можете запустить go get -d ./...из каталога своего проекта, чтобы загрузить все готовые зависимости.
Или скопируйте все srcподкаталоги с GOPATH на конечный компьютер.
...это специальный шаблон, который говорит, что нужно рекурсивно идти вниз.


1
Если мне нужно запустить / изменить код, он не найдет пакетов.

1
Я знаю, что могу получить пакеты с помощью go get <package>, но это отнимает много времени и сложно, когда программа использует много пакетов.

4
-t установит также тестовые зависимости
honzajde

3
@AlbertoSchiabel ...- это особый шаблон. Он говорит идти вниз рекурсивно. Я обновил ответ
RoninDev

Спасибо @RoninDev! Сначала я собирался отредактировать ваш ответ на ./., потому что после того, как я попробовал команду you на моем компьютере, он застрял (и теперь я знаю, почему, поскольку рекурсивный поиск файлов go может быть довольно дорогим), но потом я понял, что это лучше спросить сначала. Благодаря!
Альберто Скиабель

52

Пытаться

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

или же

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

Во втором будут перечислены все подзависимости, в первом - только напрямую импортированные пакеты.


24

Команда ниже работает для меня, она загружает все зависимости.

go get -u -v -f all

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