版本
错误
从six.moves导入http_client
的模块
ImportError:没有名为move
说明
在使用dev_appserver.py
在本地系统上运行时在Google应用引擎上运行的随机播放应用程序,导入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 -dynload','/ usr / lib / google-cloud-sdk / platform / google_appengine / lib / ssl-2.7.11','/ usr / lib / google-cloud-sdk / platform / google_appengine / lib / gribcio-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 / find3.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 / pytz-2017.2','/ usr / lib / google-cloud-sdk / platform / google_appengine / lib / webapp2-2.3','/ usr / lib / google-cloud-sdk / platform / google_appengine / lib / we bob-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 /谷歌'] [ 'BytesIO', '迭代', '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','作者','内置',' doc ','文件','名称','包','路径', '版本','_ add_doc','_ somesertCountEqual','_ somesertRaisesRegex','_ asertRegex','_ func_closure','_ func_code','_ 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']。< / p>
从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
答案 0 :(得分:3)
根据Google支持小组的跟进,我们发现使用datastore
与google-cloud-datastore
进行通信已被弃用
而是使用ndb
来进行数据存储的通信。
记录了使用客户端数据存储库弃用的更新文档here
记录了在python中开始使用 ndb客户端库的文档here
答案 1 :(得分:1)
对我来说,通过在https://github.com/googleapis/python-ndb/issues/249上关注它可以解决问题
andrewsg在11天前评论:
我认为我们已经确定devappserver与六个库有关的问题。您可以尝试解决方法吗?在加载NDB之前,在您的应用程序顶部添加以下行:
import six; reload(six)
,让我知道是否行得通。
答案 2 :(得分:0)
在某些情况下,如果您想在应用程序中使用一些python纯库(如六个),则需要使用第三方库。
按照说明here添加第三方库,直到命令pip install -t lib -r requirements.txt
。在您的requirements.txt文件中添加six==1.11.0
。
它解决了我的问题。