【问题标题】:ImportError when running dev_appserver.py from pycharm从 pycharm 运行 dev_appserver.py 时出现 ImportError
【发布时间】:2019-01-05 04:42:15
【问题描述】:

我在 Windows 上使用最新版本的 pycharm 2018.2。 我也将 Google Cloud Sdk 更新到了最新版本。

当我在 Pycharm 中使用内置的 App Engine 运行配置时: 我得到一个导入错误ImportError: cannot import name _common 出现在运行窗口中:

"C:\Program Files\JetBrains\PyCharm 2018.1.1\bin\runnerw.exe" C:\Code\my- 
 project\env\Scripts\python.exe "C:/Program Files (x86)/Google/Cloud 
 SDK/google-cloud-sdk/bin/dev_appserver.py" --port 8484 app.yaml tasks.yaml 
 longtasks.yaml --log_level=debug Traceback (most recent call last):
 File "C:/Program Files (x86)/Google/Cloud SDK/google-cloud- 
 sdk/bin/dev_appserver.py", line 12, in <module>
   from bootstrapping import bootstrapping
  File "C:\Program Files (x86)\Google\Cloud SDK\google-cloud-   
   sdk\bin\bootstrapping\bootstrapping.py", line 24, in <module>
  from . import setup  # pylint:disable=g-import-not-at-top
  File "C:\Program Files (x86)\Google\Cloud SDK\google-cloud- 
  sdk\bin\bootstrapping\setup.py", line 55, in <module>
  from googlecloudsdk.core import properties
  File "C:\Program Files (x86)\Google\Cloud SDK\google-cloud- 
  sdk\lib\googlecloudsdk\core\properties.py", line 36, in <module>
  from googlecloudsdk.core.util import times
  File "C:\Program Files (x86)\Google\Cloud SDK\google-cloud- 
  sdk\lib\googlecloudsdk\core\util\times.py", line 55, in <module>
  from dateutil.tz import _common as tz_common
  ImportError: cannot import name _common

  Process finished with exit code 1

dateutil.tz 包位于C:\Python27\Lib\site-packages,我正在运行的项目中有一个 dateutil 包。我不知道这是否与问题有关。我尝试更改默认的 python 解释器,但它也不起作用。我尝试以管理员身份运行 Pycharm,但也没有任何效果。调试和非调试运行命令都会导致此问题。

如果我直接在终端中运行命令启动 dev_appserver.py(有或没有虚拟环境 python),它可以正常工作例如"C:/Program Files (x86)/Google/Cloud SDK/google-cloud-sdk/bin/dev_appserver.py" --port 8484 app.yaml tasks.yaml longtasks.yaml

另外,如果我运行 pycharm 正在运行的命令(除了 runnerw 部分),那么它也可以正常工作(从命令行):

C:\Code\project>C:\Code\project\env\Scripts\python.exe "C:/Program Files 
(x86)/Google/Cloud SDK/google-cloud-sdk/bin/dev_appserver.py" --port 8484 
 app.yaml tasks.yaml longtasks.yaml --log_level=debug
 INFO     2018-07-29 08:11:15,566 devappserver2.py:178] Skipping SDK update 
 check.
 INFO     2018-07-29 08:11:17,726 api_server.py:274] Starting API server at: 
 http://localhost:59886
 INFO     2018-07-29 08:11:18,259 dispatcher.py:270] Starting module 
   "default" running at: http://localhost:8484
 INFO     2018-07-29 08:11:18,519 dispatcher.py:270] Starting module "tasks" 
 running at: http://localhost:8485
 INFO     2018-07-29 08:11:18,815 dispatcher.py:270] Starting module 
"longtasks" running at: http://localhost:8486
INFO     2018-07-29 08:11:18,822 admin_server.py:152] Starting admin server 
at: http://localhost:8000

还值得注意的是,我可以在 Pycharm 中运行其他 GAE 项目并且它们确实运行(这让我认为这与我对这个项目的配置有关)。

【问题讨论】:

  • 用什么命令“直接在终端启动dev_appserver.py”?
  • 请注意,pycharm 运行您的程序与您手动尝试的 cmd 略有不同(您记录了确切的 cmd):C:\Code\my-project\env\Scripts\python.exe "C:.../dev_appserver.py" ...。手动尝试。您的项目是否配置为使用 virtualenv? (注意使用的非标准python.exe
  • @sraw "C:/Program Files (x86)/Google/Cloud SDK/google-cloud-sdk/bin/dev_appserver.py" --port 8484 app.yaml tasks.yaml longtasks.yaml是我在终端中运行的命令。
  • @DanCornilescu 我已经用该输出更新了问题;它工作正常。
  • 也许您已经导入了_common 符号?

标签: python google-app-engine pycharm dev-appserver


【解决方案1】:

这是 PyCharm Pro 2018.2.4 中的一个错误。我遇到了同样的问题,并回滚到 2018.1.5 并且运行良好。

问题是2018.2.4加载的是cloud-sdk appengine柔性环境类,而不是标准环境类。

【讨论】:

  • 知道如何解决这个问题吗?好像还没有修复(2019.2 PyCharm Pro EAP)
  • 在 OS X 上,截至 2019 年 5 月,它肯定仍未修复。您必须使用 2018 版本
  • 仅供参考:我发现如果您使用 dev_appserver.py 脚本运行它,您可以在调试模式下运行它。它的工作原理相同
  • 你是对的,如果你只是用 /Users/[your username]/google-cloud-sdk/platform/google_appengine/dev_appserver.py 作为它运行的脚本运行一个 python 应用程序。问题是 pycharm 正在尝试运行 google-cloud-sdk/bin/dev_appserver.py
【解决方案2】:

解决此问题的一种巧妙方法是在文本编辑器中打开 &lt;path-to...&gt;/googlecloudsdk/core/util/times.py 并注释掉

from dateutil.tz import _common as tz_common

tz_common.PY3 = True  # MONKEYPATCH!!! Fixes a Python 2 standard module bug.

假设您不需要这个“monkeypatch”,这就解决了问题。

【讨论】:

    【解决方案3】:

    我安装了版本211.0.0 - https://dl.google.com/dl/cloudsdk/channels/rapid/downloads/google-cloud-sdk-211.0.0-darwin-x86_64.tar.gz

    接着是:

    gcloud components install app-engine-python
    

    【讨论】:

      【解决方案4】:

      @user2061291 认为这是真的。 Pycharm 正在尝试运行 google-cloud-sdk/bin/dev_appserver.py。如果你想从 pycharm 运行应用程序引擎,因为你想调试你的代码或其他东西,那么你应该像这样创建一个新的 python 运行器:

      脚本路径:

      /{您的 GOOGLE-CLOUD-SDK 根目录 PATH}/google-cloud-sdk/platform/google_appengine/dev_appserver.py

      例如:

      【讨论】:

        猜你喜欢
        • 2023-01-16
        • 2019-07-03
        • 1970-01-01
        • 2012-06-14
        • 2013-12-05
        • 2014-05-07
        • 2021-11-21
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多