在 Ubuntu 17.10 上,备份应用程序失败并出现以下错误:
Traceback (most recent call last):
File "/usr/bin/duplicity", line 1546, in <module>
with_tempdir(main)
File "/usr/bin/duplicity", line 1540, in with_tempdir
fn()
File "/usr/bin/duplicity", line 1391, in main
do_backup(action)
File "/usr/bin/duplicity", line 1416, in do_backup
globals.archive_dir).set_values()
TypeError: __init__() takes exactly 4 arguments (3 given)
我认为这可能是 Python 2/3 的问题,但看起来 17.10 上的其他用户的 deja-dup 可以正常工作。
我尝试重新安装 deja-dup 和 duplicity,但问题依然存在。
Duplicity 版本:0.7.12-1ubuntu1
Deja-dup 版本:36.3-0ubuntu0.1
编辑:
我怀疑由于某种原因 Duplicity 没有传递self
给班级,但在代码中有问题的行是:
col_stats = collections.CollectionsStatus(globals.backend,
globals.archive_dir).set_values()
这意味着它可能不是 Python 版本错误,因为它确实向该类传递了三个参数。
现在在CollectionsStatus
课堂上,帮助说:
Help on class CollectionsStatus in module duplicity.collections:
class CollectionsStatus
| Hold information about available chains and sets
|
| Methods defined here:
|
| __init__(self, backend, archive_dir, action)
| Make new object. Does not set values
这意味着它肯定应该传递 4 个参数,包括self
。
我有一种感觉,我知道哪里出了问题。我经常使用脚本来更新我的所有 Python 模块,所以我敢打赌,该类在某个地方发生了变化,并且 Duplicity(shell 脚本)及其 Python 模块的版本不匹配。
答案1
显然,我有 Duplicity Python 模块 0.7.14 和 aptitude 包 0.7.12。我先使用sudo pip uninistall duplicity
,然后使用sudo aptitude reinstall duplicity
,问题就解决了。
我想我不应该一次更新所有 Python 模块。