# #go #dependencies
Вопрос:
У меня есть большой каталог пакетов Go, который на самом деле является моим каталогом $ GOPATH / src. Я пытаюсь получить список всех пакетов (и их версий, в конечном счете, если это возможно, но даже имена были бы хорошим началом) во всех подкаталогах этого каталога рекурсивно (включая каталоги поставщиков). Когда я запускаю go list all ./...
в $ GOPATH / src, я получаю кучу сообщений::
код в каталоге [foo] ожидает импорта [bar]
Однако, если я перейду к рабочим каталогам отдельных пакетов, это, похоже, сработает. Я также не уверен, почему он действительно находит пакеты в приведенной выше команде, но отображает эту ошибку, которую он не отображает, когда я перехожу к каталогу каждого пакета. Есть ли способ указать такой рекурсивный поиск с помощью набора инструментов Go?
Ответ №1:
Я также не уверен, почему он на самом деле находит пакеты в приведенной выше команде, но отображает эту ошибку, которую он не отображает, когда я перехожу к каталогу каждого пакета
Это, по-видимому, является следствием src/cmd/go/internal/load/pkg.go
if !cfg.ModulesEnabled amp;amp; data.err == nil amp;amp;
data.p.ImportComment != "" amp;amp; data.p.ImportComment != path amp;amp;
!strings.Contains(path, "/vendor/") amp;amp; !strings.HasPrefix(path, "vendor/") {
data.err = fmt.Errorf("code in directory %s expects import %q", data.p.Dir, data.p.ImportComment)
}
В проекте без поддержки модуля с vendor/
пакетами вы получите эту ошибку (в отличие от той же команды, выполняемой внутри vendor
папки, которая не вызовет условие, показанное выше)