我尝试使用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,但两人都说它们是最新的。
答案 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]