2014-05-13 32 views
1

嗨我正在寫小應用程序解決指定的圖形問題。我想爲此使用goraph的maxflow算法(請參閱github.com/gyuho/goraph),但我有問題將其導入到我的項目中。Go語言:無法找到導入(github項目)

我做了什麼: - 我在我的主目錄中創建一個。去folter並添加GOPATH我的.bash_profile(出口GOPATH = $ HOME /。去)

  • 然後我打電話「去得到github.com/gyuho/goraph「。這些文件存儲在〜/ .go/src/github.com/gyuho/goraph下。 .go中也存在「bin」和「pkg」文件夾。

在我的代碼執行以下操作:

package flow 

import (
    "encoding/json" 
    "github.com/gyuho/goraph" 
    "log" 
) 

//some func definitions... 

這是我的Makefile:

# Go parameters 
GOCMD=go 
GOBUILD=$(GOCMD) build 
GOCLEAN=$(GOCMD) clean 
GOTEST=$(GOCMD) test 
GOFMT=gofmt -w 

# Directories 
SRC=src 
FLOW_SRC=$(SRC)/flow 
ERLANGC_SRC=$(SRC)/erlangc 
LOGGING_SRC=$(SRC)/logging 

# Names and files 
MAKING_OS=$(shell go env GOOS) 
MAKING_ARCH=$(shell go env GOARCH) 
TARGET_NAME=flow 
TARGET_DIR=$(shell pwd)/bin 

# Cross compilation targets 
BIN_DARWIN_AMD64=darwin-amd64 
BIN_LINUX_AMD64=linux-amd64 
BIN_LINUX_386=linux-386 
TARGET_LINUX_AMD64=$(TARGET_DIR)/$(BIN_LINUX_AMD64)/$(TARGET_NAME) 
TARGET_LINUX_386=$(TARGET_DIR)/$(BIN_LINUX_386)/$(TARGET_NAME) 
TARGET_DARWIN_AMD64=$(TARGET_DIR)/$(BIN_DARWIN_AMD64)/$(TARGET_NAME) 
ALL_TARGETS=$(TARGET_LINUX_AMD64) $(TARGET_LINUX_386) $(TARGET_DARWIN_AMD64) 

# Rules 
all: format tests build-darwin-amd64 build-linux-amd64 build-linux-386 

clean: $(ALL_TARGETS) 
     $(GOCLEAN) 
     rm -f $^ 

ci: tests build-linux-amd64 

tests: 
     $(GOTEST) $(FLOW_SRC)/*.go 
     $(GOTEST) $(ERLANGC_SRC)/*.go 

build-darwin-amd64: 
     mkdir -p $(TARGET_DIR)/$(BIN_DARWIN_AMD64) 
     cd src && GOARCH=amd64 GOOS=darwin $(GOBUILD) -o $(TARGET_DARWIN_AMD64) 

build-linux-amd64: 
     mkdir -p $(TARGET_DIR)/$(BIN_LINUX_AMD64) 
     cd src && GOARCH=amd64 GOOS=linux $(GOBUILD) -o $(TARGET_LINUX_AMD64) 

build-linux-386: 
     mkdir -p $(TARGET_DIR)/$(BIN_LINUX_386) 
     cd src && GOARCH=386 GOOS=linux $(GOBUILD) -o $(TARGET_LINUX_386) 

format: 
     $(GOFMT) -d -tabwidth=2 -tabs=false -w -s $(FLOW_SRC)/*.go 
     $(GOFMT) -d -tabwidth=2 -tabs=false -w -s $(ERLANGC_SRC)/*.go 

去ENV:

GOARCH="amd64" 
GOBIN="" 
GOCHAR="6" 
GOEXE="" 
GOHOSTARCH="amd64" 
GOHOSTOS="darwin" 
GOOS="darwin" 
GOPATH="/Users/bstoecker/.go/" 
GORACE="" 
GOROOT="/usr/local/Cellar/go/1.2.2/libexec" 
GOTOOLDIR="/usr/local/Cellar/go/1.2.2/libexec/pkg/tool/darwin_amd64" 
TERM="dumb" 
CC="clang" 
GOGCCFLAGS="-g -O2 -fPIC -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fno-common" 
CXX="clang++" 
CGO_ENABLED="1" 

打電話讓我得到以下時錯誤:

gofmt -w -d -tabwidth=2 -tabs=false -w -s src/flow/*.go 
gofmt -w -d -tabwidth=2 -tabs=false -w -s src/erlangc/*.go 
go test src/flow/*.go 
# command-line-arguments 
src/flow/graph_json.go:5: can't find import: "github.com/gyuho/goraph" 
FAIL command-line-arguments [build failed] 
make: *** [tests] Error 2 

任何一個想法我做錯了什麼? 感謝迄今

+0

這是一個很奇怪的設置。第一:你在包上運行'go test',而不是在文件上運行('go test flow'而不是'go test src/flow/*。go')。第二:設置'GOPATH'爲點文件。你的資源真的低於'/ Users/bstoecker/.go/src/flow'嗎?記住金科玉律:「確切地說_一個GOPATH」。第三:'gofmt'與花哨的標籤和空格是不可愛的。 – Volker

回答

2

Any example在那goraph project不導入只是「github.com/gyuho/goraph」。
它們導入特定的軟件包,應用程序中:

例如:

import (
    "fmt" 
    "testing" 

    "github.com/gyuho/goraph/algorithm/bfs" 
    "github.com/gyuho/goraph/graph/gsd" 
    // go test -v github.com/gyuho/goraph/example 
    // go test -v /Users/gyuho/go/src/github.com/gyuho/goraph/example/bfs_test.go 
) 

看看你是否可以在goraph導入這些包之一,而不是goraph本身。

+0

有幫助。非常感謝 – Stoecki