2016-12-25 16 views
5

Tôi đang sử dụng go-1.7 trong MacOS Sierra.thư mục của nhà cung cấp không được sử dụng với 'go build'

dự án của tôi là bên $ GOPATH/src thư mục của tôi và có một nhà cung cấp thư mục bên trong với tất cả phụ thuộc của nó.

và tôi đang sử dụng các phụ thuộc như thế này bên trong mã của tôi:

import (
"github.com/google/go-github/github" 
) 

Bây giờ nếu tôi chạy go build tôi nhận được thông báo rằng tất cả phụ thuộc của tôi, tôi sử dụng không thể được tìm thấy bên trong $ GOROOT và $ GOPATH mặt khác và thêm "nhà cung cấp" vào mã của tôi đang hoạt động:

import (
"vendor/github.com/google/go-github/github" 
) 

Nhưng theo như tôi hiểu, bạn có thể thích mã đầu tiên được cắt.

ah FYI không có liên kết tượng trưng vv

+1

Mã của bạn có trực tiếp bằng $ GOPATH/src không? Hơn thế là vấn đề. Ngay cả với thư mục của nhà cung cấp, mã của bạn vẫn phải nằm trong thư mục con riêng của nó bên trong $ GOPATH (ví dụ: $ GOPATH/src/foo) – nussjustin

+0

trong thư mục con ($ GOPATH/src/project) – chrisWhyTea

+1

'go build' nên liệt kê các đường dẫn đã tìm kiếm. Một trong số họ nên có '(cây nhà cung cấp)' sau đường dẫn. Trong trường hợp của bạn, nó sẽ liệt kê '$ GOPATH/src/project/vendor/github.com/google/go-github/github'. Nếu không, bạn thư mục nhà cung cấp không được công nhận bởi công cụ đi. – nussjustin

Trả lời

2

Ok thấy vấn đề:

File System MacOS của tôi là trường hợp nhạy cảm nhưng có vẻ như các công cụ đi không thể xử lý đó ... cố định $ GOPATH của tôi và bây giờ nó hoạt động như nó nên ..

+0

Bạn có thể giải thích chi tiết hơn về vấn đề và sửa chữa không? Điều này có thể hữu ích cho người khác. – chmike

+1

Vâng, tôi chỉ cần thay đổi $ GOPATH bên trong tập tin cấu hình shell của tôi ... vì vậy thay vì xuất GOPATH =/projects/go tôi đã thay đổi nó để xuất GOPATH =/Projects/go bởi vì thats là tên thư mục acctual .. – chrisWhyTea

0

bạn có thể sử dụng echo $GOPATH trong terminal của bạn để xem đường dẫn của bạn golang trong trường hợp của tôi là /home/gujarat/golang. đây là đường dẫn mặc định không có đường dẫn src.

Vì vậy, từ đây tất cả các gói và phụ thuộc của bạn nằm bên trong src trong $GOPATH. ví dụ ở đây là một số gói mà tôi đã sử dụng trong dự án của mình.

"fmt" 
"github.com/myproject/lol/src/config" // notice the first github.com 
"gopkg.in/redis.v4" // notice the gopkg.in 
"log" 

từ gói trên, bạn phải có tất cả thư mục và phụ thuộc được sao chép trong thư mục src. như github.comgopkg.in đây là thư mục phải tồn tại nếu trong số src gốc.

và nếu bạn không thể nhập "github.com/google/go-github/github" điều đó có nghĩa là github.com bên trong src không có thư mục này. nhưng vendor của bạn có. hy vọng nó sẽ giúp

0

Tôi gặp lỗi này và phải vật lộn trong một thời gian; Tôi cập nhật lên phiên bản 1.8.3 và đang sử dụng phiên bản trượt 0.12.3; và GOPATH của tôi được thiết lập là $ PWD và glide đã cài đặt mọi thứ trong thư mục .vendor;

Cuối cùng cũng gặp lỗi; CÓ NÊN là thư mục src trong GOPATH và tất cả không gian làm việc của bạn phải nằm trong thư mục src này

Nó phải nằm trong tài liệu và trong máy dev tôi đã đặt đúng; nhưng bỏ lỡ trong Jenkins xây dựng

Các vấn đề liên quan