Comment obtenir tous les fichiers de dépendance pour un programme utilisant Golang

90

Je crée un programme en golang et après avoir terminé le code, si je veux exécuter ce code sur un autre PC ou VM, il n'obtient pas tous les fichiers du package de dépendance. comment puis-je obtenir tous les fichiers de dépendance?


la source

Réponses:

10

Vous pouvez utiliser godep savedans votre ordinateur local où vous terminez votre programme. godep save rassemble tous les fichiers de dépendance pour vous. Lorsque vous passez à un autre PC, copiez simplement le dossier Godep avec votre code et cela résoudra vos problèmes.

Animesh Kumar Paul
la source
7
C'est peut-être évident pour certaines personnes, mais j'ai dû aller chercher ça. Il s'avère que vous devez installer le package godep ou dep sur Go. Le stie Github pour cela est ici: github.com/tools/godep
Patratacus
212

Vous pouvez exécuter à go get -d ./...partir d'un répertoire de votre projet pour télécharger toutes les dépendances go-gettable.
Ou copiez tous les srcsous-répertoires de votre GOPATH sur la machine de destination.
...est un modèle spécial, dit de descendre récursivement.

RoninDev
la source
1
Si j'ai besoin d'exécuter / de modifier le code, il ne trouve pas de packages.
1
Je sais que je peux obtenir des packages en allant chercher <package> mais cela prend tellement de temps et est difficile lorsque le programme utilise de nombreux packages.
3
-t installera également les dépendances de test
honzajde
3
@AlbertoSchiabel ...est un modèle spécial. Il dit de descendre récursivement. J'ai mis à jour une réponse
RoninDev
Merci @RoninDev! Au début, j'allais modifier votre réponse ./., car après avoir essayé votre commande sur mon PC, elle était un peu bloquée (et maintenant je sais pourquoi, car la recherche récursive des fichiers go peut être assez coûteuse), mais j'ai réalisé que c'était mieux demander d'abord. Merci!
Alberto Schiabel
51

Essayer

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

ou

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

Le second listera toutes les sous-dépendances, le premier uniquement les packages directement importés.

Fiatjaf
la source
22

La commande ci-dessous fonctionne pour moi, elle télécharge toutes les dépendances.

go get -u -v -f all
infiniLearner
la source
ça prend du temps !!! il télécharge des packages que je n'ai jamais utilisés dans le projet!
Yuseferi