Почему нельзя импортировать библиотеку из go get?

#go #redis #go-get

#Вперед #redis #go-get

Вопрос:

Я загрузил клиент go-redis с помощью

 go mod init github.com/my/repo
go get github.com/go-redis/redis/v8
  

Но он показал, что не удается найти пакет «go.opentelemetry.io/otel/api/trace «. Итак, я удалил go-redis из $ {GOPATH}/src/github.com, а затем попытался запустить его снова

 go get github.com/go-redis/redis/v8
  

Но это ничего не делает. Не показывает никаких ошибок или сообщений. Но когда я пытаюсь импортировать пакет, он говорит

не удается найти пакет «github.com/go-redis/redis/v8 » в любом из:
/usr/lib/go/src/github.com/go-redis/ redis/v8 (из $GOROOT)
/home/username/go/src/github.com/go-redis/redis/v8 (из $ GOPATH)

Я пытался go mod tidy go mod clean , но ничего не получалось. Что мне делать?

Комментарии:

1. Здесь: github.com/go-redis/redis/issues/1534 Это может помочь!

2. У меня была такая же проблема, попробуйте удалить go.sum, введите go mid tidy и попробуйте использовать golang 14.0>

Ответ №1:

  1. ls $GOPATH , если не отображается ваш путь к источнику библиотеки golang, вы должны сначала указать путь,
  2. Если пункт 1 доступен, вы должны просто выполнить : go mod tidy

аргумент tidy заставляет вас загружать пакет с помощью метода синхронизации, не выполняя go get отдельно.

Ответ №2:

Я бы предпочел использовать go vendoring, он добавит ваши зависимости в vendor/ и -mod=vendor скажет golang искать зависимости локально.

  1. Удалить go.sum
  2. Тип export GOFLAGS=-mod=vendor
  3. Тип go mod tidy amp;amp; go mod vendor

Если вы не можете экспортировать переменные, используйте go run и go build с префиксом GOFLAGS=-mod=vendor , например GOFLAGS=-mod=vendor go run cmd/main/main.go

Не забудьте добавить vendor/ в свой файл .gitignore