không thể tải gói: gói.: không có tệp nguồn Go có thể xây dựng


81

Đây là thông báo lỗi:

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

% echo $GOPATH     
/Users/7yan00/Golang

Bạn sẽ khắc phục lỗi đó như thế nào?

Câu trả lời:


52

Đảm bảo rằng bạn đang sử dụng lệnh đó trong thư mục nguồn dự án Go (như /Users/7yan00/Golang/src/myProject).

Một thay thế ( tương tự như lỗi này) là sử dụng -dtùy chọn (xem go getlệnh )

go get -d

Các -dchỉ thị cờ có được dừng sau khi tải về gói; nghĩa là, nó hướng dẫn không được cài đặt các gói.

Xem liệu điều đó có giúp ích trong trường hợp của bạn không.


Nhưng nhìn chung, như được mô tả trong chủ đề này :

go get là cho (các) gói, không phải cho kho.

vì vậy nếu bạn muốn một gói cụ thể, giả sử go.text/encoding, sau đó sử dụng

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

nếu bạn muốn tất cả các gói trong kho lưu trữ đó, hãy sử dụng ...để biểu thị rằng:

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

@ 7yan00 bạn đã ở trong thư mục nào khi chạy lệnh đó? Bạn đang sử dụng phiên bản go nào? Trên hệ điều hành nào? Bằng cách "không di chuyển", có phải bạn có nghĩa là lệnh go get bị treo, có vẻ như bị đóng băng và không bao giờ trở lại?
VonC

2
Tôi vẫn đang gặp vấn đề này bản thân mình. Tôi dường như không thể với go getbất kỳ gói từ xa nào. Tôi luôn luôn nhận được no buildable Go source files in .
giờ lùi

32

Bạn nên kiểm tra $GOPATHdanh bạ. Nếu có một thư mục trống của tên gói, go getkhông tải xuống gói từ kho lưu trữ.

Ví dụ: Nếu tôi muốn lấy github.com/googollee/go-socket.iogói từ kho lưu trữ github của nó và đã có một thư mục trống github.com/googollee/go-socket.iotrong thư mục $GOPATH, go get không tải xuống gói và sau đó phàn nàn rằng không có tệp nguồn Go có thể xây dựng trong thư mục. Trước hết, hãy xóa bất kỳ thư mục trống nào.


1
cảm ơn, tôi phải xóa /usr/local/go/src/github.com/GIT_PROJECT_NAME
Baroudi Safwen

13

Một lý do có thể khác cho thông báo:

không thể tải gói: ....: không có tệp nguồn Go có thể xây dựng

Là khi các tệp nguồn được biên dịch có:

// +build ignore

Trong trường hợp đó, các tệp bị bỏ qua và không thể xây dựng theo yêu cầu. Hành vi này được ghi lại tại https://golang.org/pkg/go/build/


1
Đây là trường hợp của tôi - dự án sử dụng thẻ xây dựng để bao gồm hoặc loại trừ các tính năng khỏi các tệp nhị phân mà chúng tôi tạo và mọi tệp trong gói đều có // +build myfeaturethẻ. Cách giải quyết là thêm một tệp trong gói có tên dummy.go không chứa gì ngoài khai báo gói (tức là package myfeature).
mmindenhall 19/09/17

1
cảm ơn cho gợi ý, trong trường hợp của tôi nó là // +build !windows
mx1up

Tương tự, gần đây tôi đã gặp phải // +build go1.9lỗi gây ra lỗi này khi tôi đang cố gắng xây dựng với go1.8
thurt

1
Đây là bằng chứng cho thấy Go thực sự cần mô tả và cụ thể hơn nhiều trong các thông báo lỗi của nó. Hiện tại, nó rất không có lợi cho sự phát triển nhanh chóng.
J. Scott Elblein

6

Để giải quyết điều này cho tình huống của tôi:

Tôi đã phải chỉ định một gói phụ cụ thể hơn để cài đặt.

Sai lầm:

go get github.com/garyburd/redigo

Chính xác:

go get github.com/garyburd/redigo/redis

3

Nếu bạn muốn tất cả các gói trong kho lưu trữ đó, hãy sử dụng ...để biểu thị điều đó, như:

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

0

Tôi đã có mã lỗi chính xác này và sau khi kiểm tra kho lưu trữ của mình, tôi đã phát hiện ra rằng không có tệp go nào mà thực sự chỉ là nhiều thư mục hơn. Vì vậy, đó là một con cá trích đỏ hơn là một lỗi đối với tôi.

Tôi khuyên bạn nên làm

đi env

và đảm bảo rằng mọi thứ đều như vậy, hãy kiểm tra các biến môi trường trong hệ điều hành của bạn và kiểm tra để đảm bảo rằng trình bao của bạn (bash hoặc w / e) không làm ảnh hưởng đến nó thông qua một cái gì đó như tệp .bash_profile hoặc .bashrc. chúc may mắn.


0

bạn có thể thử tải xuống các gói từ mod

go get -v all

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.