не вдається завантажити пакет: пакет.: немає вбудованих вихідних файлів Go


81

Ось повідомлення про помилку:

% go get     
can't load package: package .: no buildable Go source files in /Users/7yan00

% echo $GOPATH     
/Users/7yan00/Golang

Як би ви усунули цю помилку?

Відповіді:


52

Переконайтеся, що ви використовуєте цю команду у вихідній папці Go (наприклад /Users/7yan00/Golang/src/myProject).

Однією з альтернатив ( подібною до цієї помилки) є використання -dопції (див. go getКоманду )

go get -d

В -dпрапор інструктує дістатися до зупинки після завантаження пакетів; тобто вказує отримати не встановлювати пакунки.

Подивіться, чи це допомагає у вашому випадку.


Але більш загально, як описано в цій темі :

go get призначений для пакетів, а не для сховищ.

тож якщо ви хочете конкретний пакет, скажімо go.text/encoding, тоді використовуйте

go get code.google.com/p/go.text/encoding

якщо ви хочете всі пакети в цьому сховищі, використовуйте ...для позначення, що:

go get code.google.com/p/go.text/...

@ 7yan00, в якій папці ти був, коли запускав цю команду? Яку версію go ви використовуєте? На якій ОС? Під "не рухається", ви маєте на увазі команду go get зависає, здається, застигла і ніколи не повертається?
VonC

2
Я все ще маю цю проблему сам. Я не можу здатись go getвіддаленим пакункам. Я завжди отримую no buildable Go source files in .
пісочний час

32

Вам слід перевірити $GOPATHкаталог. Якщо в назві пакета є порожній каталог, go getвін не завантажує пакет із сховища.

Наприклад, якщо я хочу , щоб отримати github.com/googollee/go-socket.ioпакет від його сховища GitHub, і є вже порожній каталог github.com/googollee/go-socket.ioв $GOPATH, go get НЕ завантажити пакет , а потім скаржиться , що немає працездатна вихідний файл Перейти в каталог. Видаліть спочатку будь-який порожній каталог.


1
дякую, мені довелося видалити /usr/local/go/src/github.com/GIT_PROJECT_NAME
Баруді Сафвен

13

Ще одна можлива причина повідомлення:

не вдається завантажити пакет: ....: відсутні вихідні файли Go, які можна створити

Коли вихідні файли, що компілюються, мають:

// +build ignore

У такому випадку файли ігноруються і не можуть бути створені відповідно до запиту. Ця поведінка задокументована за адресою https://golang.org/pkg/go/build/


1
Це було саме для мене - проект використовує теги побудови, щоб включати або виключати функції з побудованих нами бінарних файлів, і кожен файл у пакунку мітив // +build myfeatureтег. Обхідним шляхом було додавання файлу в пакет, який називається dummy.go, який містив нічого, крім оголошення пакета (тобто, package myfeature).
mmindenhall

1
спасибі за підказку, в моєму випадку це було // +build !windows
mx1up

Подібним чином, нещодавно я зіткнувся з // +build go1.9причиною цієї помилки, коли намагався побудувати за допомогою go1.8
thurt

1
Це ще більше підтвердження того, що Go дійсно повинен бути набагато більш описовим та конкретним у повідомленнях про помилки. В даний час це дуже не сприяє швидкому розвитку.
Дж. Скотт Елблейн,

6

Щоб вирішити це для моєї ситуації:

Мені довелося вказати більш конкретний підпакет для встановлення.

Неправильно:

go get github.com/garyburd/redigo

Правильно:

go get github.com/garyburd/redigo/redis

3

Якщо ви хочете, щоб усі пакунки у цьому сховищі, використовуйте ...для позначення цього, наприклад:

go get code.google.com/p/go.text/...

0

Я мав цей точний код помилки, і після перевірки мого сховища виявив, що файлів go немає, а насправді просто більше каталогів. Тож це для мене було скоріше червоною оселедцем, ніж помилкою.

Я б порекомендував це зробити

перейти env

і переконавшись, що все як слід, перевірте змінні свого середовища у вашій ОС та переконайтесь, що ваша оболонка (bash або w / e) не порушує її через щось на зразок файлу .bash_profile або .bashrc. Щасти.


0

Ви можете спробувати завантажити пакети з мода

go get -v all

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.