在 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-appengine
和 pip 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指示我选择 Languages & Frameworks> 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 控制台时,这些错误会立即显示;我什至没有光标。我哪里错了?
最佳答案
您引用的帖子适用于第一代标准环境 - Python 2.7 - 这是唯一支持 ndb
库的环境:
对于其他环境,您需要使用通用数据存储客户端库。引用资料:
- Using Cloud Datastore - 用于第二代标准环境
- Using Cloud Datastore - 灵活的环境
关于python - 在 PyCharm Pro 中从 Google App Engine SDK 导入时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55544748/