2016-03-15 18 views
14

tôi đặt GOPATH tôi đểTôi có thể có nhiều thư mục GOPATH không?

/Users/me/dev/go 

và tôi có

/Users/me/dev/go/src/client1 
/Users/me/dev/go/src/client2 
/Users/me/dev/go/src/client3 

và cũng

/Users/me/dev/client1/rails_project 
/Users/me/dev/client2/php_project 
etc. 

tôi không thích như thế nào trong thư mục dev gốc của tôi, tôi đang buộc phải có thư mục "go" chung này chứa nhiều dự án đi của khách hàng khác nhau.

+0

Có. Các mục riêng biệt: hoặc; tùy thuộc vào hệ điều hành. – Volker

Trả lời

21

Vâng, GOPATH là danh sách các thư mục (như PATH). Chạy go help gopath để biết chi tiết. Ví dụ: trên Linux, tôi có:

$ go env 
GOROOT="/home/peter/go" 
GOPATH="/home/peter/gopath:/home/peter/public/gopath" 
$ 

Tôi có thứ tương tự trên Windows.

Lưu ý: Linux sử dụng : làm dấu tách danh sách GOPATH; Windows sử dụng ; làm dấu phân tách.

Nếu bạn sử dụng go get, nó sẽ mặc định là thư mục đầu tiên trong danh sách.

Chạy go env để kiểm tra xem mọi thứ có chính xác không.

+7

Thật không may, điều này vẫn gây ra tất cả các loại đau buồn như dụng cụ dường như không xử lý nhiều GOPATH tốt. Ví dụ: các thư mục của nhà cung cấp chỉ được chọn trong mục đầu tiên trong đường dẫn; 'go get' chỉ hoạt động với mục đầu tiên trong đường dẫn; hầu hết (tất cả?) công cụ quản lý nhà cung cấp không mong đợi có nhiều hơn một mục trong đường dẫn; các workpath khác nhau được coi là khác nhau "cây". Và, các gói ở nhiều hơn một địa điểm (bị bán) hơi bị một chút. Tôi vẫn đang cố gắng tìm ra tất cả điều này, nhưng vẫn chưa tìm được một giải pháp tốt. – payneio

6

Có.

Để trích dẫn Go bản thân:

$ go help gopath 

Con đường Go được sử dụng để giải quyết tuyên bố nhập khẩu. Nó được thực hiện bởi và được ghi lại trong gói go/build.

Biến môi trường GOPATH liệt kê các địa điểm để tìm mã Go.
Trên Unix, giá trị là một chuỗi được phân tách bằng dấu hai chấm.
Trên Windows, giá trị là một chuỗi được phân cách bằng dấu chấm phẩy.
Trên Gói 9, giá trị là danh sách.

GOPATH phải được đặt để nhận, xây dựng và cài đặt các gói bên ngoài cây tiêu chuẩn chuẩn.

Mỗi thư mục được liệt kê trong GOPATH phải có cấu trúc được quy định:

Thư mục src giữ mã nguồn. Đường dẫn bên dưới src xác định đường dẫn nhập hoặc tên thực thi.

...

1

This blog post đưa ra một lời giải thích rất tốt đẹp về làm thế nào và tại sao người ta sẽ đặt nhiều giá trị trong GOPATH, đặc biệt là khi nó nói:

GOPATH của tôi bao gồm 3 thư mục hoặc không gian làm việc GOPATH.

Đầu tiên là không gian làm việc đích.Kể từ khi nó được liệt kê đầu tiên, bất cứ khi nào tôi nhận được bất kỳ gói mới, nó luôn luôn kết thúc trong không gian làm việc này.

Tìm kiếm từng thư mục được liệt kê trong GOPATH để tìm mã nguồn, nhưng các gói mới luôn được tải xuống thư mục đầu tiên trong danh sách. Tôi làm cho nó là một quy tắc để không bao giờ thực hiện bất kỳ sự phát triển nào trong đó, vì vậy nó luôn an toàn để dọn dẹp thư mục này bất cứ khi nào nó quá lớn (với gói Go tôi không sử dụng). Sau khi tất cả, nó chỉ có Go gói mà tôi có thể nhận được một lần nữa với đi nhận được.

Không gian làm việc thứ hai của tôi là dành cho tất cả gói Go cá nhân của tôi và bất kỳ gói nào khác mà tôi có thể muốn "yêu thích" hoặc thực hiện một số phát triển. Tôi di chuyển những thứ tôi sử dụng thường xuyên từ không gian làm việc đầu tiên sang thứ hai.

Không gian làm việc thứ ba của tôi được dành riêng cho gói Go riêng tư từ công việc của tôi và phụ thuộc của chúng. Thật thuận tiện để có các gói công việc của tôi tách biệt với tất cả các nội dung cá nhân của tôi, vì vậy họ không hiểu theo cách của nhau.

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