2017-09-06 48 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]

相關問題