python-2.7 - 尝试使用 NDB 将 Google App Engine Python 2 应用程序迁移到 Cloud NDB Python 3 库时出现导入错误
问题描述
我目前正在开始为Python 3 迁移准备 App Engine 应用程序。在第一步中:
- 将 Python 2 应用中的 App Engine 捆绑服务迁移到 Google Cloud 服务...
按照将数据存储模块从切换到的所有说明,我立即收到以下导入错误:google.appengine.ext.ndb
google.cloud.ndb
File "/usr/lib/google-cloud-sdk/platform/google_appengine/google/appengine/runtime/wsgi.py", line 240, in Handle
handler = _config_handle.add_wsgi_middleware(self._LoadHandler())
File "/usr/lib/google-cloud-sdk/platform/google_appengine/google/appengine/runtime/wsgi.py", line 311, in _LoadHandler
handler, path, err = LoadObject(self._handler)
File "/usr/lib/google-cloud-sdk/platform/google_appengine/google/appengine/runtime/wsgi.py", line 85, in LoadObject
obj = __import__(path[0])
File "/home/---.py", line 8, in <module>
from google.cloud import ndb
File "/home/test_env/local/lib/python2.7/site-packages/google/cloud/ndb/__init__.py", line 28, in <module>
from google.cloud.ndb.client import Client
File "/home/test_env/local/lib/python2.7/site-packages/google/cloud/ndb/client.py", line 23, in <module>
from google.cloud import _helpers
File "/home/test_env/local/lib/python2.7/site-packages/google/cloud/_helpers.py", line 29, in <module>
from six.moves import http_client
ImportError: No module named moves
无论我是否在虚拟环境中进行测试,都会发生这种情况。导入six.moves
在 python 控制台中工作。
解决方案
显然这是捆绑测试服务器的问题dev_appserver.py
。发现它被 Andrewsg解决了:
我认为我们已经确定了与这六个库相关的 devappserver 问题。您能尝试一下解决方法吗?在加载 NDB 之前,将行添加
import six; reload(six)
到应用程序的顶部
推荐阅读
- javascript - Redux 中间件工作一半但未完全取消操作
- python - Python:如何用数据框中的条件替换 NaN?
- nginx-config - nginx 配置 - 否定条件
- android - 世博会推送通知 - 错误:无法获取设备的 GCM 令牌
- cntk - CNTK LSTM 输入形状
- ibm-integration-bus - 由于从 IBM Integration Bus 工作区中删除 GeneratedBarFiles 文件夹而导致部署库时出现问题
- json - Json 将 Socket.io 解析为 HTML 表
- typo3 - 如何将新变量添加到 viewhelper (Typo3 9)
- php - 更新记录:如何检查是否有新文件上传 PHP
- react-native - 未加载反应本机自定义字体