【问题标题】:Dev_appserver.py error when trying to deploy to Google AppEngine尝试部署到 Google AppEngine 时出现 Dev_appserver.py 错误
【发布时间】:2016-06-15 16:21:33
【问题描述】:

我正在尝试使用 Google AppEngine 部署示例 dart 服务器。但是,当我运行这个 python 脚本时(安装了最新的 python 版本 3.5)

dev_appserver.py

我也试过

dev_appserver.py --custom_entrypoint "dart bin/server.dart {port}" app.yaml

我收到此错误:

Traceback (most recent call last):
  File "C:\Users\jkrie\AppData\Local\Google\Cloud SDK\google-cloud- sdk\bin\dev_appserver.py", line 11, in <module>
    import bootstrapping.bootstrapping as bootstrapping
  File "C:\Users\jkrie\AppData\Local\Google\Cloud SDK\google-cloud-sdk\bin\bootstrapping\bootstrapping.py", line 9, in <module>
    import setup

ImportError: 没有名为“setup”的模块

我还安装了 setuptools。我不得不假设我的 Google Cloud SDK 安装有问题,但我真的不知道是什么。 python 3.5是不是太新了,我需要尝试旧版本吗?

【问题讨论】:

    标签: python google-app-engine dart


    【解决方案1】:

    【讨论】:

      【解决方案2】:

      Google 可以在文件前添加

      #!/usr/bin/env python2
      

      而不是

      #!/usr/bin/env python
      

      这将使他们的工具与默认使用 python3 的操作系统兼容。

      【讨论】:

        【解决方案3】:

        正如@dan-cornilescu 所说,GAE 标准环境仅支持 Python2.7

        如果您在 Python 的多版本环境中,您可以轻松地使用 Pipenv 来运行带有 Python 2.7 版本的 dev_appserver.py。

        have installed pipenv globaly 之后,您可以使用 Python 2.7 在项目文件夹中创建一个 pipenv 环境

        # pipenv install --twoo
        

        每次你需要运行 dev_appserver.py 时你都应该使用这个命令

        # pipenv run dev_appserver.py app.yaml
        

        pipenv 将使用 Python 2.7 运行您的代码。 ;-)

        【讨论】:

          【解决方案4】:

          确实,您暂时必须将 Python 2 用于标准 App Engine 环境。

          如果您安装了 Python 3,则可以使用 Python 2 使用 mkvirtualenv google --python=$(which python2) 创建一个 virtualenv,并在该环境中运行 dev_appserver.py .

          这省去了将 python 降级或符号链接到 python2 的麻烦

          【讨论】:

            【解决方案5】:

            因为我安装了 python2.9 和 python3.6,所以我遇到了这个问题。 无需卸载 python3 的快速方法就是在使用 GAE 时删除环境变量中的 python3 路径。使用 GAE 后将它们添加回来。

            【讨论】:

              【解决方案6】:

              我在一个非常简单的 python35 应用程序中遇到了同样的问题(现在,一年后!) 我确实创建了一个 python27 虚拟环境,它确实有效,但需要更多解决方法。

              最简单的方法是在 shell 命令行上运行 python applicationmodule.py,确保在底部有这个:
              if __name__ == '__main__': # This is used when running locally. Gunicorn is used to run the # application on Google App Engine. See entrypoint in app.yaml. app.run(host='127.0.0.1', port=8080, debug=True)

              如果你想使用 dev_appserver.py 运行,我发现我需要运行以下命令才能在 Google Cloud Shell 上运行:dev_appserver.py app.yaml --custom_entrypoint ./applicationmodule.py

              在这种情况下,请确保 applicationmodule.py 没有 if __name__ == '__main__': 代码。如果你确实有这个,那么它会再次启动相同的任务并抱怨端口 8080 上的争用。

              这与其他答案不同,其他答案的 --custom_entrypoint 参数看起来更像 app.yaml entrypoint: 条目。

              在某一时刻执行 dev_appserver.py 抱怨执行 applicationmodule.py(我完全忘记了),所以我同时执行了 chmod 777 并添加了 #!指向我的本地 python 可执行文件 - 两者都完成后它工作了,但不知道是 chmod 还是 #! 做到了。

              【讨论】:

                【解决方案7】:

                App Engine 现在从 3.7 版开始支持 Python 3。

                如果您仍将 Python 2 作为默认设置,指定版本 3 的一种方法是将其添加到您的 ~/.zshrc 或其他启动脚本中:

                CLOUDSDK_PYTHON=python3
                

                如果环境变量没有别名为python3,它也可以采用首选 Python 可执行文件的完整路径。

                这是支持版本 2.7 和 3.7 之间的 quick start guide 和一些 differences

                【讨论】:

                  猜你喜欢
                  • 1970-01-01
                  • 2019-09-27
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 2015-07-04
                  • 1970-01-01
                  • 1970-01-01
                  • 2018-07-14
                  相关资源
                  最近更新 更多