2015-06-17 16 views
17

tôi có cấu trúc tập tin sau đây:Go: nhập khẩu địa phương trong gói phi địa phương

. 
├── bin 
│   └── hello 
├── pkg 
└── src 
    └── jacob.uk.com 
     ├── greeting 
     │   └── greeting.go 
     └── helloworld.go 

5 directories, 3 files 

Với GOPATH sau

/Users/clarkj84/Desktop/LearningGo 

Sau khi thực hiện /usr/local/go/bin/go install jacob.uk.com trong thư mục src, tôi nhận được lỗi local import "./greeting" in non-local package

helloworld.go:

package main; 
import "./greeting" 

func main() { 

} 

Trả lời

18

Bạn không thể sử dụng tính năng nhập cục bộ khi chỉ định gói không phải địa phương là go install. Nếu bạn muốn nhập địa phương hoạt động, trước tiên hãy đổi thư mục làm việc thành src/jacob.uk.com rồi thực hiện go install (không chỉ định gói).

Tất nhiên là có helloworld.go bạn đã cung cấp, bạn sẽ gặp lỗi biên dịch: imported and not used. Nhưng một khi bạn sử dụng một cái gì đó từ gói greeting được nhập khẩu, nó sẽ biên dịch.

Nhưng bạn không nên sử dụng nhập khẩu địa phương. Thay vào đó, hãy viết:

import "jacob.uk.com/greeting" 

Và làm như vậy bạn sẽ có thể biên dịch/chạy/cài đặt từ mọi nơi.

11

Nhập go build không hoạt động với nhập khẩu không thuộc địa phương; bạn phải nhập go build main.go.

go install hoàn toàn không hoạt động với hàng nhập khẩu không thuộc địa phương.

Đây là tài liệu tại https://golang.org/cmd/go/#hdr-Relative_import_paths

Xem

cho lời giải thích.

-1

bạn có thể bỏ qua điều này bằng cách sử dụng tính năng nhà cung cấp
thay đổi import "./greeting"-import "greeting"
tạo thư mục nhà cung cấp mkdir vendor và tạo ra một liên kết tượng trưng ln -s ../greeting vendor/greeting

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