ImportError:没有名为move的模块

vin*_*yal 5 google-app-engine python-2.7 google-app-engine-python six

版本

  • Python:2.7.14
  • :1.9.0和1.11.0(两者都试过)
  • 操作系统:mac(10.13.3)&ubuntu(16.04)[ 试过两者 ]

错误

从six.moves导入http_client
ImportError:没有名为move的模块

描述

在使用谷歌应用引擎运行的烧瓶应用程序,dev_appserver.py同时在导入时使用上面的错误在本地系统上运行它from six.moves import http_client

我试过了什么

导入六个已经尝试过dir(six)哪个显示moves列表中有但是它无法导入它,这很奇怪.

产量six.__version__:1.11.0

dir输出(六)

['/ opt/tribes-backend','/ opt/tribes-backend/lib1','/ usr/lib/google-cloud-sdk/platform/google_appengine','/ usr/lib/google-cloud-sdk/platform/google_appengine','/ usr/lib/python2.7','/ usr/lib/python2.7/lib-dadload','/ usr/lib/google-cloud-sdk/platform/google_appengine/lib/ssl -2.7.11','/ usr/lib/google-cloud-sdk/platform/google_appengine/lib/grccio-1.0.0','/ usr/lib/google-cloud-sdk/platform/google_appengine/lib/six -1.9.0','/ usr/lib/google-cloud-sdk/platform/google_appengine/lib/protobuf-3.0.0','/ usr/lib/google-cloud-sdk/platform/google_appengine/lib/enum -0.9.23','/ usr/lib/google-cloud-sdk/platform/google_appengine/lib/finuts3.0.5','/ usr/lib/google-cloud-sdk/platform/google_appengine/lib/setuptools -36.6.0','/ usr/lib/google-cloud-sdk/platform/google_appengine/lib/protocc-1.0','/ usr/lib/google-cloud -sdk/platform/google_appengine/lib/pyk-1717.2 ','/ usr/lib/google-cloud-sdk/platform/google_appengine/lib/webapp2-2.3','/ usr/lib/google-cloud-sdk/platform/google_appengine/lib/webob -1.1.1','/ usr/lib/google-cloud-sdk/platform/google_appengine/lib/werkzeug-0.11.10','/ usr/lib/google-cloud-sdk/platform/google_appengine/lib/yaml -3.10','/ usr/local/lib/python2.7 /dist-packages/enum','/ usr/lib/google-cloud-sdk/platform/google_appengine/lib/concurrent/concurrent','/ usr/local/lib/python2.7/dist-packages/concurrent','/ usr/local/lib/python2.7/record-packages/google','/ usr/lib/google-cloud-sdk/platform/google_appengine/google'] ['BytesIO','Iterator','MAXSIZE','Module_six_moves_urllib','Module_six_moves_urllib_error','Module_six_moves_urllib_parse','Module_six_moves_urllib_request','Module_six_moves_urllib_response','Module_six_moves_urllib_robotparser','MovedAttribute','MovedModule','PY2 ','PY3','StringIO','_ LazyDescr','_ LazyModule','_ MoveIItems','_ SixMetaPathImporter',' author ',' builtins ',' doc ',' file ',' name ',' package ', ' path ',' version ','_ add_doc','_ somesertCountEqual','_ somesertRaisesRegex','_ asertRegex','_ func_closure','_ func_cod e','_ func_defaults','_ func_globals','_ import_module','_ importer','_ meth_func','_ meth_self','_ moved_attributes','_ print','_ urllib_error_moved_attributes','_ urllib_parse_moved_attributes','_ urllib_request_moved_attributes','_ urllib_response_moved_attributes' ,'_urllib_robotparser_moved_attributes','absolute_import','add_metaclass','add_move','advance_iterator','assertCountEqual','assertRaisesRegex','assertRegex','b','binary_type','byte2int','callable',' class_types','create_bound_method','exec_','functools','get_function_closure','get_function_code','get_function_defaults','get_function_globals','get_method_function','get_method_self','get_unbound_function','indexbytes','int2byte' ,'integer_types','iterbytes','iteritems','iterkeys','iterlists','itertools','itervalues','move','next','operator','print _','python_2_unicode_compatible',' raise_from','remove_move','reraise','string_types','sys','text_type','types','u','unichr','viewitems' ,'viewkeys','viewvalues','with_metaclass','wraps'].

因为它可以从上面的输出可以看到moves里面six仍然给错误而将其导入.

花了很多时间在这个,没有解决方案,直到现在任何帮助将在这里非常感谢.:(

UPDATE1

错误堆栈跟踪: -

 from google.cloud.datastore import helpers
 File "/opt/tribes-backend/denv/local/lib/python2.7/site-packages/google/cloud/datastore/helpers.py", line 27, in <module>
 from google.cloud._helpers import _datetime_to_pb_timestamp
 File "/opt/tribes-backend/denv/local/lib/python2.7/site-packages/google/cloud/_helpers.py", line 30, in <module>
 from six.moves import http_client
 ImportError: No module named moves
Run Code Online (Sandbox Code Playgroud)

小智 5

对我来说,通过关注https://github.com/googleapis/python-ndb/issues/249解决了这个问题

andrewsg 11 天前评论:

我认为我们已经发现了与这六个库相关的 devappserver 问题。您能尝试一下解决方法吗?在加载 NDB 之前,将行:添加import six; reload(six)到应用程序的顶部,并让我知道这是否有效。


vin*_*yal 3

根据与谷歌支持团队的跟进,我们发现与datastoreusing进行通信google-cloud-datastore已被弃用,而使用用于ndb通信数据存储才是正确的方法。

更新的文档说明使用客户端数据存储库的弃用记录在此处

此处记录了 python 中的ndb 客户端库入门文档