昨天我更新了 gsutil,从那以后它从命令行失败并显示以下堆栈跟踪:
$ gsutil
Traceback (most recent call last):
File "/usr/local/bin/gsutil", line 11, in <module>
load_entry_point('gsutil==4.27', 'console_scripts', 'gsutil')()
File "/usr/local/lib/python2.7/site-packages/pkg_resources/__init__.py", line 570, in load_entry_point
return get_distribution(dist).load_entry_point(group, name)
File "/usr/local/lib/python2.7/site-packages/pkg_resources/__init__.py", line 2751, in load_entry_point
return ep.load()
File "/usr/local/lib/python2.7/site-packages/pkg_resources/__init__.py", line 2405, in load
return self.resolve()
File "/usr/local/lib/python2.7/site-packages/pkg_resources/__init__.py", line 2411, in resolve
module = __import__(self.module_name, fromlist=['__name__'], level=0)
File "/usr/local/lib/python2.7/site-packages/gslib/__main__.py", line 51, in <module>
from gslib import metrics
File "/usr/local/lib/python2.7/site-packages/gslib/metrics.py", line 39, in <module>
from gslib.util import CalculateThroughput
File "/usr/local/lib/python2.7/site-packages/gslib/util.py", line 39, in <module>
from apitools.base.py import http_wrapper
File "/usr/local/lib/python2.7/site-packages/apitools/base/py/__init__.py", line 20, in <module>
from apitools.base.py.base_api import *
File "/usr/local/lib/python2.7/site-packages/apitools/base/py/base_api.py", line 31, in <module>
from apitools.base.protorpclite import message_types
File "/usr/local/lib/python2.7/site-packages/apitools/base/protorpclite/message_types.py", line 25, in <module>
from apitools.base.protorpclite import messages
File "/usr/local/lib/python2.7/site-packages/apitools/base/protorpclite/messages.py", line 1168, in <module>
class Field(six.with_metaclass(_FieldMeta, object)):
TypeError: Error when calling the metaclass bases
metaclass conflict: the metaclass of a derived class must be a (non-strict) subclass of the metaclasses of all its bases
这是通过 pip 安装在 FreeBSD 11.1 上的。 它是通过 pip install --upgrade gsutil 升级的。
多年来,相同的设置一直运行良好。 (,我们不是在 FreeBSD 11.1 上,因为它已经好几年没有出来了,但是在同一个安装上)
我认为,这可能是导致问题的依赖项之一。
快到周末了,当然不用着急。 :微笑:
顺便说一句,'google-apitools==0.5.15' 对此有一个修复......但 gsutil 被固定到 0.5.3 版。
或者,您需要引脚六封装。
谢谢! 我将六个固定到以前的版本作为临时修复。
今天发布了 v4.28,它固定到apitools
v0.5.16。 标记为固定。
谢谢!
对于有问题的其他人, pip install six==1.10.0
是 6 的版本。 对于 Python2.7,我需要使用pip2
,但这取决于您自己的 Python。 pip
或pip3
也可能有效。
最有用的评论
顺便说一句,'google-apitools==0.5.15' 对此有一个修复......但 gsutil 被固定到 0.5.3 版。
或者,您需要引脚六封装。