在Google App Engine上部署我的应用程序的“ goapp deploy”和“ appcf.py”之间的区别?

I don't understand the difference between

goapp deploy -application <YOUR_PROJECT_ID> myapp/

and

appcfg.py -A <YOUR_PROJECT_ID_> -V v1 update myapp/

when trying to deploy my app in google app engine. Can somebody enlighten me please?

Documented in Uploading, Downloading, and Managing a Go App:

goapp deploy wraps the appcfg.py python tool provided in the SDK. You can also invoke this tool directly if you need greater control over the deployment.

goapp deploy is equivalent to appcfg.py update myapp/.

These commands get application ID and other configuration from app.yaml automatically. You can use -application param of goapp, or -A of appcfg.py to override the application ID.


So goapp deploy calls appcfg.py under the hood, it is a convenient method to hide appcfg.py.

goapp deploy -application <YOUR_PROJECT_ID> myapp/

Deploys the application located in the myapp folder. Configuration will be read from the app.yaml file that must be at myapp/app.yaml. The command also overrides the application ID (if present in app.yaml), and <YOUR_PROJECT_ID> will be used instead.

appcfg.py -A <YOUR_PROJECT_ID> -V v1 update myapp/

This also deploys the application, but the -V overrides the version that may be present in myapp/app.yaml, and will use the version v1. -A is used to override the ID from app.yaml, will be <YOUR_PROJECT_ID> in this case.

goapp is a general tool for the whole Go-on-App-Engine workflow from build to deployment; you can use the same tool to install dependences (get), build your app, run locally (serve) and then deploy it (as well as run tests, format code, etc).

Some of these wrap other tools: goapp fmt probably just wraps gofmt, whilst goapp deploy just wraps appcfg.py update (see docs)