当前位置: 首页 > 知识库问答 >
问题:

appcfg.py 在命令行中不起作用

薛元忠
2023-03-14

我只是有点不明白为什么这个命令:

>appcfg.py -A adept-box-109804 update app.yaml

正如“立即试用谷歌应用引擎”页面所给出的,该页面不起作用。我已经下载了适用于 Python 的 App Engine SDK,并将 Path 设置为指向 appcfg.py 的位置,但在项目根目录中运行 appcfg.py 在命令行中不起作用。我要么必须导航到包含 appcfg.py 的文件夹,然后执行

>python appcfg.py help

或者做

>python "C:\Program Files (x86)\Google\google_appengine\appcfg.py" help

让命令从任何地方工作。我使用后一种方法来部署我的测试应用程序,但只是想知道是否有人能解释为什么简单的谷歌教程给出的命令没有做任何事情。我还检查了以确保. py文件会使用Python 2.7解释器自动打开,这样文件hello.py将通过简单的键入在命令行中执行

>hello.py

另一方面,以类似的方式使用appcfg.py会给出相同的输出,无论参数如何(请注意,我截断了输出,但请放心,无论参数如何,它们都是相同的:

C:\>appcfg.py help backends
Usage: appcfg.py [options] <action>

Action must be one of:
  backends: Perform a backend action.
  backends configure: Reconfigure a backend without stopping it.
  backends delete: Delete a backend.
  backends list: List all backends configured for the app.
  backends rollback: Roll back an update of a backend.
  backends start: Start a backend.
  backends stop: Stop a backend.
  backends update: Update one or more backends.
  create_bulkloader_config: Create a bulkloader.yaml from a running application.
  cron_info: Display information about cron jobs.
  delete_version: Delete the specified version for an app.
  download_app: Download a previously-uploaded app.
  download_data: Download entities from datastore.
  help: Print help for a specific action.
  list_versions: List all uploaded versions for an app.
  request_logs: Write request logs in Apache common log format.
  resource_limits_info: Get the resource limits.
  rollback: Rollback an in-progress update.
  set_default_version: Set the default (serving) version.
  start_module_version: Start a module version.
  stop_module_version: Stop a module version.
  update: Create or update an app version.
  update_cron: Update application cron definitions.
  update_dispatch: Update application dispatch definitions.
  update_dos: Update application dos definitions.
  update_indexes: Update application indexes.
  update_queues: Update application task queue definitions.
  upload_data: Upload data records to datastore.
  vacuum_indexes: Delete unused indexes from application.
Use 'help <action>' for a detailed description.

C:\>appcfg.py help update
Usage: appcfg.py [options] <action>

Action must be one of:
  backends: Perform a backend action.
  backends configure: Reconfigure a backend without stopping it.
  backends delete: Delete a backend.
  backends list: List all backends configured for the app.
  backends rollback: Roll back an update of a backend.
  backends start: Start a backend.
  backends stop: Stop a backend.
  backends update: Update one or more backends.
  create_bulkloader_config: Create a bulkloader.yaml from a running application.
  cron_info: Display information about cron jobs.
  delete_version: Delete the specified version for an app.
  download_app: Download a previously-uploaded app.
  download_data: Download entities from datastore.
  help: Print help for a specific action.
  list_versions: List all uploaded versions for an app.
  request_logs: Write request logs in Apache common log format.
  resource_limits_info: Get the resource limits.
  rollback: Rollback an in-progress update.
  set_default_version: Set the default (serving) version.
  start_module_version: Start a module version.
  stop_module_version: Stop a module version.
  update: Create or update an app version.
  update_cron: Update application cron definitions.
  update_dispatch: Update application dispatch definitions.
  update_dos: Update application dos definitions.
  update_indexes: Update application indexes.
  update_queues: Update application task queue definitions.
  upload_data: Upload data records to datastore.
  vacuum_indexes: Delete unused indexes from application.
Use 'help <action>' for a detailed description.

共有3个答案

邢灿
2023-03-14

我遇到了这个问题,并且在本地变量python版本中有所加深,这与应用程序引擎python版本不同。因此,解决方案只是在脚本之前添加当前python版本位置:

C:\Python27\python.exe "C:\Program Files (x86)\Google\google_appengine\appcfg.py"

而且它刚刚恢复正常工作。

夏祯
2023-03-14
匿名用户

您的困惑可能源于混淆了两种可能的调用样式:

  1. <code>python appcfg。py…
  2. appcfg。py…

第一个不能利用< code>appcfg.py的位置在路径中的事实,它只是< code>python可执行文件的一个参数,该文件不能定位< code>appcfg.py文件,除非:

  • 它在当前目录中找到它
  • appcfg。py文件是使用完整路径或相对于调用python的当前工作目录的路径指定的

这就是您的第 2 个和第 3 个命令无法按预期工作的原因。如果 appcfg.py 的位置在路径中,则改用第二个调用样式应该有效 - 就像上次命令调用一样。

要记住的关键点:路径配置仅适用于命令可执行文件,而不适用于其参数(BTW每个可执行文件可以按其意愿进行处理,某些可执行文件可能会将参数与路径配置组合以获取文件的位置)。

类似地,< code>appcfg.py本身(使用两种调用方式中的任何一种成功调用后)需要能够找到指定为参数的< code>app.yaml文件。它不能这样做,除非:

  • 它在当前目录中找到它
  • app.yaml文件(或其目录)是使用完整路径或相对于调用appcfg.py的当前工作目录的路径指定的

我怀疑appcfg.py无法找到您的app.yaml文件可能是您提到的第一个命令不起作用的原因。如果不是,您应该提供有关失败的详细信息。

关于为什么不管参数如何,最后一个命令的输出都是相同的,我不确定,这可能是Windows版本SDK中的bug。在linux中,输出是不同的:

> appcfg.py help backends
Usage: appcfg.py [options] backends <directory> <action>

Perform a backend action.

The 'backends' command will perform a backends action.

Options:
  -h, --help            Show the help message and exit.
  -q, --quiet           Print errors only.
  -v, --verbose         Print info level logs.
  --noisy               Print all logs.
  -s SERVER, --server=SERVER
                        The App Engine server.
  -e EMAIL, --email=EMAIL
                        The username to use. Will prompt if omitted.
  -H HOST, --host=HOST  Overrides the Host header sent with all RPCs.
  --no_cookies          Do not save authentication cookies to local disk.
  --skip_sdk_update_check
                        Do not check for SDK updates.
  -A APP_ID, --application=APP_ID
                        Set the application, overriding the application value
                        from app.yaml file.
  -M MODULE, --module=MODULE
                        Set the module, overriding the module value from
                        app.yaml.
  -V VERSION, --version=VERSION
                        Set the (major) version, overriding the version value
                        from app.yaml file.
  -r RUNTIME, --runtime=RUNTIME
                        Override runtime from app.yaml file.
  -E NAME:VALUE, --env_variable=NAME:VALUE
                        Set an environment variable, potentially overriding an
                        env_variable value from app.yaml file (flag may be
                        repeated to set multiple variables).
  -R, --allow_any_runtime
                        Do not validate the runtime in app.yaml
  --oauth2              Ignored (OAuth2 is the default).
  --oauth2_refresh_token=OAUTH2_REFRESH_TOKEN
                        An existing OAuth2 refresh token to use. Will not
                        attempt interactive OAuth approval.
  --oauth2_access_token=OAUTH2_ACCESS_TOKEN
                        An existing OAuth2 access token to use. Will not
                        attempt interactive OAuth approval.
  --authenticate_service_account
                        Authenticate using the default service account for the
                        Google Compute Engine VM in which appcfg is being
                        called
  --noauth_local_webserver
                        Do not run a local web server to handle redirects
                        during OAuth authorization.

向俊贤
2023-03-14

我终于找到了真正的原因,这并不是AppEngine SDK的错误。相反,这是我的Python解释器,因为我注意到它不接受任何.py文件的参数。结果是一个注册表错误,位于[HKEY_CLASSES_ROOT\Applications\python.exe\shell\open\command],我必须将值从“C:\Python27\python.exe”“%1”更改为

这是如何发生的,无论是Python 2.7安装程序,还是AppEngine SDK,我都不确定。

 类似资料:
  • 我试图在一个网站上使用gettext,为此我遵循O'Reilly媒体教程。在第一页的末尾,它说我需要使用命令,但是我的命令行返回以下内容:我在XAMPP上运行我的网站,所以我的整个目录是这样的: 我有考试。php在gettext文件夹中,以及消息。采购订单位于文件夹中。即使我尝试使用poedit,它也不起作用。这是我的测验。php代码: 我不确定bindtextdomain函数中的字符串是否正确。

  • 命令是否在的命令行中工作? 第一步: C:\Users\Rezaul 步骤2: C:\Users\Rezaul http://localhost:8000

  • 尝试在python中设置一些从本地sqlite db读取和写入的基本数据I/O脚本。我想使用命令行来验证我的脚本是否按预期工作,但它们不会在我正在创建的任何数据库或表上接收。 我的第一个脚本将dict中的一些数据写入表中,第二个脚本读取并打印它。 写: 阅读: 这些脚本是独立的,两者都可以正常工作。但是,如果我导航到命令行中的目录并激活sqlite3,则没有任何其他功能。我试过了。数据库“,”。表

  • 我是PSQL新手。在终点站。我输入了以下命令 我面临以下错误: PSQL:无法连接到服务器:没有这样的文件或目录服务器是否在本地运行并接受Unix域套接字“/var/run/PostgreSQL/.s.pgsql.5432”上的连接? 请有人在这方面帮助我。

  • 我只是在Windows中安装jdk和jre版本8。环境变量已设置。我尝试在cmd中运行“java-version”,它显示了安装的java版本。但是当我尝试用“javac projectname”编译java项目时,系统说javac不能被识别为内部命令或外部命令。有谁能告诉我怎么修好它吗? 下面是我的环境变量: C:\users\foody>echo%路径%C:\ProgramData\Oracl

  • 我使用以下基本Maven命令生成了一个项目: 该项目是正确创建的,我可以测试自动生成的App类,而没有任何问题的说明: 稍后,我向POM添加了一些依赖项,获得了以下文件: 最后,为了测试起见,我修改了之前由Maven自己生成的App类: 一系列奇怪的事情发生了: > 即使在POM中指定了较新版本的依赖项,但在.m2文件夹中,下载的版本似乎较旧(例如,commons-lang3的版本为2.1和2.5

  • 问题内容: 我正在尝试使用bash脚本将JSON文件上传到我的noSQL数据库中,但是它不起作用,我也不明白为什么。 这是脚本: 这是错误: 当我执行命令行中给出的命令时,它仍然可以正常工作。 这是什么错误?谢谢 问题答案: 不要将命令存储在变量中;如果您绝对必须具有可用于日志记录的内容,请将 参数 放入数组中。