2017-09-06 58 views
0

我试图使用gsutil命令从gs存储区下载文件。这是谷歌云虚拟机实例的下降,直到周五,当它停止工作,没有任何变化,我一直在为我工作。gsutil错误“ImportError:无法导入名称常量”我无法修复

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

随着CLOUDSDK_PYTHON集,这是我得到

[daily-gateway-node bin]$ gsutil -version Traceback (most recent call last): File "/usr/local/bin/gsutil", line 7, in from gslib.main import main File "/usr/local/lib/python2.7/site-packages/gslib/main.py", line 39, in import boto File "/usr/local/lib/python2.7/site-packages/boto/init.py", line 1216, in boto.plugin.load_plugins(config) File "/usr/local/lib/python2.7/site-packages/boto/plugin.py", line 93, in load_plugins _import_module(file) File "/usr/local/lib/python2.7/site-packages/boto/plugin.py", line 75, in _import_module return imp.load_module(name, file, filename, data) File "/usr/lib/python2.6/site-packages/google_compute_engine/boto/boto_config.py", line 30, in from google_compute_engine import constants ImportError: cannot import name constant

任何帮助将不胜感激错误。最终,我试图做的是从BigQuery获取数据,但不幸的是,Google只允许我们从本地导入Big Query,而不是从Big Query导出到本地,所以我被卡住了使用这个持续给我的gsutil库问题。我能够很好地运行bq命令。

到目前为止,我已经多次搜索了这个问题,尝试了各种解决方案,从设置CLOUDSDK_PYTHON到像“/usr/local/bin/python2.7/usr/bin/gsutil -l”一样运行gsutil,但所有内容给出了上述错误。看来python 2.7正在被使用,直到最后一次调用时才回到2.6 dir。我试过用yum和pip重新安装谷歌云sdk,但都说它们是最新的。

回答

0

我放弃了试图让python 2.6与gsutil一起工作,因为我没有发现任何工作,但我设法让事情工作。

我的解决方案是用python> 2.7启动另一个Google Cloud Instance,它是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]

相关问题