从PyCharm Pro中的Google App Engine SDK导入时出现问题

时间:2019-04-06 00:15:10

标签: python google-app-engine pycharm app-engine-ndb

在MacOS上使用PyCharm Pro 2019.1.1,使用带有Flask,Jinja2等的Python 3编写我的应用程序。已经使用App Engine Flexible部署了我的应用程序版本,我希望下一个版本将Datastore用于我的生产环境变量。尝试遵循this post时遇到问题,这需要进行以下导入:

from google.appengine.ext import ndb

在我的一生中,我似乎无法使这项工作发挥作用。我敢肯定,一旦我的应用程序被部署(著名的遗言?),它就能正常工作,但是我也很想让它在本地工作。

最初尝试使用pip install google-appenginepip install appengine-sdk,只是发现两者都无法安装在我的venv上。

Google Cloud SDK v241.0.0安装在/Users/<me>/google-cloud-sdk上,并且gcloud命令在终端中运行。 gcloud components list显示app-engine-python组件已安装,这可能是不相关的,因为我在PyCharm中使用venv。

PyCharm的documentation指导我在语言和框架> Google App Engine 下选择App Engine SDK目录。

选择/Users/<me>/google-cloud-sdk会产生此错误:

Traceback (most recent call last):
  File "/Users/<me>/Library/Application Support/JetBrains/Toolbox/apps/PyCharm-P/ch-0/191.6605.12/PyCharm.app/Contents/helpers/pydev/pydevconsole.py", line 5, in <module>
    from _pydev_comm.rpc import make_rpc_client, start_rpc_server, start_rpc_server_and_make_client
  File "/Users/<me>/Library/Application Support/JetBrains/Toolbox/apps/PyCharm-P/ch-0/191.6605.12/PyCharm.app/Contents/helpers/pydev/_pydev_comm/rpc.py", line 4, in <module>
    from _pydev_comm.server import TSingleThreadedServer
  File "/Users/<me>/Library/Application Support/JetBrains/Toolbox/apps/PyCharm-P/ch-0/191.6605.12/PyCharm.app/Contents/helpers/pydev/_pydev_comm/server.py", line 4, in <module>
    from _shaded_thriftpy.server import TServer
  File "/Users/<me>/Library/Application Support/JetBrains/Toolbox/apps/PyCharm-P/ch-0/191.6605.12/PyCharm.app/Contents/helpers/third_party/thriftpy/_shaded_thriftpy/server.py", line 5, in <module>
    import logging
  File "/Users/<me>/google-cloud-sdk/lib/surface/logging/__init__.py", line 22, in <module>
    from googlecloudsdk.calliope import base
ModuleNotFoundError: No module named 'googlecloudsdk'

选择/Users/<me>/google-cloud-sdk/platform/google_appengine似乎会让我更进一步,但仍然会产生错误:

Traceback (most recent call last):
  File "/Users/<me>/Library/Application Support/JetBrains/Toolbox/apps/PyCharm-P/ch-0/191.6605.12/PyCharm.app/Contents/helpers/pydev/pydevconsole.py", line 5, in <module>
    from _pydev_comm.rpc import make_rpc_client, start_rpc_server, start_rpc_server_and_make_client
  File "/Users/<me>/Library/Application Support/JetBrains/Toolbox/apps/PyCharm-P/ch-0/191.6605.12/PyCharm.app/Contents/helpers/pydev/_pydev_comm/rpc.py", line 1, in <module>
    import socket
  File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/socket.py", line 53, in <module>
    from enum import IntEnum, IntFlag
ImportError: cannot import name 'IntFlag' from 'enum' (/Users/<me>/google-cloud-sdk/platform/google_appengine/lib/grpcio-1.9.1/enum/__init__.py)

如控制台所示,“枚举”中没有IntFlag对象。当我启动Python控制台时,这些错误会立即显示。我什至没有光标。我要去哪里错了?

1 个答案:

答案 0 :(得分:1)

您引用的帖子适用于第一代标准环境-python 2.7-这是唯一支持ndb库的环境:

对于其他环境,您需要使用通用数据存储客户端库。参考文献:

可能感兴趣的:How to tell if a Google App Engine documentation page applies to the standard or the flexible environment