Ecognium
Ecognium

Reputation: 2076

Go Package Conflict

I am new to Go and AppEngine. I am trying to figure out how to create packages but I keep running into conflicts. My directory structure is below:

GOPATH
 third-party-libs 
 app 
  app.yaml
  controllers
     default.go -- package controllers
   models
     models.go -- package models
   templates
     templates.go  -- package templates

I am importing the templates package as follows import ("app/templates") inside default.go

When I do goapp serve I get this error:

Failed parsing input: app file templates.go conflicts with 
same file imported from GOPATH

I have tried a bunch of things and nothing has worked so far. These are things I have tried:

  1. Changed the templates directory to apptemplates and the corresponding file to apptemplates.go, changed package name to apptemplates. I imported it as app/apptemplates

  2. I tried different combinations by changing the file name but not the package name, vice versa, etc. Either it does not find the file or has a conflict.

  3. I am importing html/template in my templates.go file. So I commented out the entire file just keeping the package declaration but did not make the conflict go away

I thought may be another file is named templates.go but when I do this (at the GOPATH level) find . -name "*.go" | grep "templates.go" I only see the one file I have created.

I am confused as to how packages are created. I have changed the name to something generic so it does not look like a naming issue. Can someone please tell me how I can debug this error?

Thanks!

Upvotes: 3

Views: 2048

Answers (1)

Thundercat
Thundercat

Reputation: 120941

Rename the package to a non-conflicting name as in #1. Import the package using the path "apptemplates".

Packages inside of the application directory (the directory containing app.yaml) are imported with a path relative to the application directory. See Organizing Go Apps for the complete details.

Upvotes: 4

Related Questions