Notice: Over the next few months, we're reorganizing the App Engine documentation site to make it easier to find content and better align with the rest of Google Cloud products. The same content will be available, but the navigation will now match the rest of the Cloud products. If you have feedback or questions as you navigate the site, click Send Feedback.

Specifying dependencies

Stay organized with collections Save and categorize content based on your preferences.

You can use any linux/amd64-compatible package with instances running in the App Engine flexible environment. These instructions assume you are using the go get command to get the packages directly from supported repositories, such as GitHub, Bitbucket, LaunchPad, and so forth.

Declaring and managing dependencies

Go applications are organized into packages that mirror the directory structure of your source files. When you use an import statement, the relative paths in the import are interpreted. Valid import paths are fully-qualified paths that are relative to the src subdirectory of all the directories that are specified in your GOPATH.

For example, if GOPATH is defined as follows:

export GOPATH=/home/fred/go

And the src1-1.go file in the example app's directory contains the following import statement:

import "foo/bar"

Then the gcloud CLI will look for the "foo/bar" package in the following location when you run or deploy the app:


If you include your package sources in GOPATH, you must be careful not to place your source code at or below your app's directory where the app.yaml file is located. If that happens, subtle problems can occur because a package might get loaded twice, once for the path relative to a service's directory, and once again for the fully-qualified path. To avoid problems, the gcloud CLI will scan both your app's directory and GOPATH, and then report an error if a conflict is detected.

For best results, we recommend the following:

  • Create a separate directory in your app's directory for each service.
  • Each service's directory should contain the service's app.yaml file and one or more .go files.
  • Do not include any subdirectories in a service's directory.
  • Your GOPATH should specify a directory that is outside your app's directory and contain all the dependencies that your app imports.

Downloading required packages

You can use the go get command to download packages. For example, to download packagename from the GitHub my_repo:

go get

Deploying to App Engine

In order to deploy your application to App Engine, you'll need to deploy the libraries that are required by your app along with your application code. For complete details, see Deploying your application.