gpt4 book ai didi

python - 如果使用 python 和子进程从 pycharm 调用,gsutil 不起作用, "cannot import name _common"

转载 作者:行者123 更新时间:2023-12-04 11:33:58 24 4
gpt4 key购买 nike

我编写了一个 python 脚本来自动化一些 gsutil 操作。
如果我通过命令行运行 gsutil 工作正常。但是如果我在 python 中用 subprocess 翻译相同的命令,我会得到一个错误:

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)

我收到这个错误
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

任何帮助

最佳答案

我已经很好地解决了这个问题。问题的根源在于您调用 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 .事实证明,它正在加载 dateutil 的 Python2.7/site-packages 版本。
因此,要解决此问题,您可以通过以下方式指定 clouddk python 二进制文件

export CLOUDSDK_PYTHON=<what-ever-python-distro-you-want>
pyCharm 是一个绝妙的工具。希望这能让一些人轻松使用这个强大 IDE 的内置运行器/调试器。

关于python - 如果使用 python 和子进程从 pycharm 调用,gsutil 不起作用, "cannot import name _common",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56183289/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com