web-dev-qa-db-fra.com

mise en page inattendue du répertoire golang

J'ai donc téléchargé minio sur github.com/minio/minio

Je veux l'exécuter à partir de la source,

Je crée mon répertoire comme:

~/Downloads/minio-RELEASE.2017-06-13T19-01-01Z
|
 src
   |
    all minio directories, including vendor, like the image below

enter image description here

J'utilise également godep pour résoudre d'autres dépendances sous GOPATH.

Maintenant, je l'exécute à partir de Gogland (allez IDE)

Ça montre:

GOROOT=/usr/local/Cellar/go/1.8.3/libexec
GOPATH=/Users/xl/Downloads/minio-RELEASE.2017-06-13T19-01-01Z:/Users/xl/go
/usr/local/Cellar/go/1.8.3/libexec/bin/go build -i -o /private/var/folders/8v/6dg7d6mx2850sv1gp8ts9thm0000gn/T/go_run_main_gogo /Users/xl/Downloads/minio-RELEASE.2017-06-13T19-01-01Z/src/main.go
unexpected directory layout:
    import path: github.com/Azure/azure-sdk-for-go/storage
    root: /Users/xl/Downloads/minio-RELEASE.2017-06-13T19-01-01Z/src
    dir: /Users/xl/Downloads/minio-RELEASE.2017-06-13T19-01-01Z/src/vendor/github.com/Azure/azure-sdk-for-go/storage
    expand root: /Users/xl/Downloads/minio-RELEASE.2017-06-13T19-01-01Z/src
    expand dir: /Users/xl/Downloads/minio-RELEASE.2017-06-13T19-01-01Z/src/vendor/github.com/Azure/azure-sdk-for-go/storage
    separator: /

Maintenant, je suis confus, quel est le problème? Les fichiers sont tous là et les répertoires sont exactement comme ce qu'ils impriment. Comment je le répare? Merci.

7
Wingzero

Voir Disposition du code GitHub

$GOPATH est la racine du projet - chacun de vos dépôts Github sera extrait plusieurs dossiers ci-dessous $GOPATH.
Votre $GOPATH la variable pointera vers la racine de votre espace de travail Go, comme décrit dans Comment écrire du code Go .

Dans votre cas, sous votre dossier GOPATH, vous devriez avoir

src/github.com/minio/minio

Anf uniquement puis "tous les répertoires minio, y compris le fournisseur"

7
VonC

Sur Golang 1.13, il m'est soudainement arrivé sur tout mon code après la mise à niveau de 1.11 vers 1.13.

Il semble que golang 1.13 n'aime plus les importations comme "./something".

J'ai dû développer n'importe quelle importation comme "myapp/quelque chose"

15

Cela peut se produire si vous avez des dépôts en double sous goroot ET gopath. Supprimez le goroot.

5
Sentinel

Aussi avec go1.13 (avec le mod move to go), j'ai trouvé que si je déplaçais mon projet sous mon $ GOPATH, je pouvais utiliser l'instruction import "./mypackage". Le même projet sous $ GOPATH ne serait pas construit avec les erreurs données par l'OP ci-dessus. Je ne suis pas encore prêt à abandonner ma variable d'environnement $ GOPATH mais j'aime garder les petits packages locaux à leur projet lorsque cela est possible, sans m'engager dans un fichier go.mod quand ce n'est pas nécessaire.

0
WeakPointer