Используя модули, на недавно установленный пакет нельзя ссылаться в проекте - PullRequest
0 голосов
/ 10 января 2019

go версия go1.11.4 darwin / amd64 GOPATH был отключен, но ранее ему было присвоено значение $ HOME / Development / go

Путь проекта находится под $ HOME / code /

Я могу успешно (по крайней мере, без ошибок) установить пакет go-sql-driver / mysql с помощью команды

go get github.com/go-sql-driver/mysql@v1

Когда я включаю ссылку на этот пакет в операторе импорта

import(
_ "github.com/go-sql-driver/mysql")

в моем коде я вижу ошибку

не удалось импортировать github.com/go-sql-driver/mysql (не могу найти импорт: «github.com/go-sql-driver/mysql")

Я запустил go mod init в корне моего проекта, и он создает файл go.mod. Когда я запускаю команду go get, я вижу, что в этот файл добавлен оператор require для пакета. Но, похоже, файлы для пакета устанавливаются в каталог $ HOME / go по умолчанию (так как я установил GOPATH).

Должен ли я делать что-то по-другому, чтобы мой оператор импорта мог найти недавно установленный пакет? При использовании модулей не должны ли все пакеты быть установлены в пути проекта?

Ответы [ 2 ]

0 голосов
/ 10 января 2019

Я почти уверен, что делал что-то не так. Я смог решить эту проблему после ссылки на следующие шаги, описанные в golang modules wiki . Суть в том, что нет необходимости «устанавливать» пакет через «go get». Вместо этого просто убедитесь, что ваш проект инициализирован для использования модулей с помощью команды go mod init, а затем включите имя пакета в оператор импорта. Следующее событие сборки разрушит пакет и все его зависимости.

0 голосов
/ 10 января 2019

Должен ли я действовать по-другому, чтобы моя инструкция import могла найти только что установленный пакет?

Нет. С модулями нет необходимости устанавливать пакеты заранее.

При использовании модулей не все ли пакеты должны быть установлены в пути проекта?

Нет. Они загружаются где-то в каком-то формате и используются из этого места, но они не «установлены», как в старом варианте GOPATH go get.

Показать вывод go env и то, что производит go mod vendor.

...