gsutil错误" ImportError:无法导入名称常量"我无法修复

时间:2017-09-06 00:16:13

标签: google-compute-engine gsutil

我尝试使用gsutil命令从gs bucket下载文件。这是从谷歌云虚拟机实例中删除的,它一直在为我工作,直到它周五停止工作,而我没有任何改变。

无论出于何种原因,操作系统都是CentOS 6,因此默认的python是2.6。当我开始在这个盒子上工作时,我能够使用env变量CLOUDSDK_PYTHON来指定python 2.7路径,并且一切都工作了几周。然后出乎意料的是,它停止了gsutil内部的一些python错误。我在盒子上找到了一个备份版本并且一直在使用它,直到周五它停止工作。

设置了CLOUDSDK_PYTHON,这是我得到的错误

  

[daily-gateway-node bin] $ gsutil -version   Traceback(最近一次调用最后一次):     文件" / usr / local / bin / gsutil",第7行,in       来自gslib。主要导入主要     文件" /usr/local/lib/python2.7/site-packages/gslib/ main .py",第39行,在       进口博托     文件" /usr/local/lib/python2.7/site-packages/boto/ init .py",第1216行,in       boto.plugin.load_plugins(配置)     文件" /usr/local/lib/python2.7/site-packages/boto/plugin.py",第93行,在load_plugins中       _import_module(文件)     文件" /usr/local/lib/python2.7/site-packages/boto/plugin.py",第75行,在_import_module中       return imp.load_module(名称,文件,文件名,数据)     文件" /usr/lib/python2.6/site-packages/google_compute_engine/boto/boto_config.py",第30行,在       来自google_compute_engine导入常量   ImportError:无法导入名称常量

非常感谢任何帮助。最终我要做的就是从BigQuery获取数据,但遗憾的是Google只允许我们从本地导入Big Query而不是从Big Query导出到本地,所以我很难使用这个gsutil库不断给我带来麻烦。我能够正常运行bq命令。

到目前为止,我已经多次搜索过这个问题并尝试了各种解决方案,从设置CLOUDSDK_PYTHON到运行gsutil,类似于" /usr/local/bin/python2.7 / usr / bin / gsutil - 升"但是一切都给出了上述错误。似乎python 2.7正在使用,直到最后一次调用它回到2.6目录。我尝试用yum和pip重新安装google cloud sdk,但两人都说它们是最新的。

1 个答案:

答案 0 :(得分:0)

我放弃了尝试让python 2.6与gsutil一起工作,因为我找不到任何工作,但我确实设法使事情有效。

我的解决方案是使用python>启动另一个Google Cloud Instance。 2.7,这是ubuntu 16.04,并从该框运行gsutil,然后使用gcloud compute ssh远程执行gsutil命令,然后使用gcloud compute scp复制到CentOS 6框。

这些是从CentOS 6框中运行的,用于复制目录中的所有文件:

  

gcloud compute ssh [GC_Host_For_gsutil] --zone = us-west1-a - “gsutil -m cp -r \   [GS_BUCKET_WITH_NO_SLASH] [NFS_DIR_WITH_SLASH];“

     

gcloud compute scp --zone = us-west1-a --recurse \
  [GC_Host_For_gsutil]:[NFS_DIR_WITH_SLASH] * [final_destination_no_slash]