Dar*_*ioB 5 python pycharm gsutil
我已经编写了python脚本来自动执行一些gsutil操作。如果我通过命令行运行,则gsutil可以正常运行。但是,如果我在python中将相同的命令翻译成子进程,则会出现错误:
BUCKET_NAME = 'datastore-backup'
FOLDER_NAME = 'my_folder'
gcs_path = os.path.join('gs://', BUCKET_NAME, FOLDER_NAME)
files = subprocess.check_output(['gsutil', 'ls', gcs_path], stderr=sys.stdout)
print(files)
Run Code Online (Sandbox Code Playgroud)
我得到这个错误
Traceback (most recent call last):
File "/Users/dario/Downloads/google-cloud-sdk/bin/bootstrapping/gsutil.py", line 13, in <module>
import bootstrapping
File "/Users/dario/Downloads/google-cloud-sdk/bin/bootstrapping/bootstrapping.py", line 32, in <module>
import setup # pylint:disable=g-import-not-at-top
File "/Users/dario/Downloads/google-cloud-sdk/bin/bootstrapping/setup.py", line 55, in <module>
from googlecloudsdk.core import properties
File "/Users/dario/Downloads/google-cloud-sdk/lib/googlecloudsdk/core/properties.py", line 34, in <module>
from googlecloudsdk.core.util import times
File "/Users/dario/Downloads/google-cloud-sdk/lib/googlecloudsdk/core/util/times.py", line 55, in <module>
from dateutil.tz import _common as tz_common
ImportError: cannot import name _common
Run Code Online (Sandbox Code Playgroud)
任何帮助
我已经彻底解决了这个问题。问题的根源是当您调用 或subprocess.check
时os.system(
,gsutil cli 将使用错误的 python。
就我而言,gsutil 使用系统 python 二进制文件,即2.7
. 我通过print(tz)
在 中插入一条语句发现了这个问题/Users/dario/Downloads/google-cloud-sdk/lib/googlecloudsdk/core/util/times.py
。事实证明,它正在加载 Python2.7/site-packages 版本的 dateutil。
因此,要解决此问题,您可以通过以下命令指定cloudsdk python 二进制文件
export CLOUDSDK_PYTHON=<what-ever-python-distro-you-want>
Run Code Online (Sandbox Code Playgroud)
pyCharm 是一个无与伦比的出色工具。希望这能让一些人轻松使用这个强大的 IDE 的内置运行器/调试器。
归档时间: |
|
查看次数: |
217 次 |
最近记录: |