在终端下运行wicd-gtk,然后选某个网络进行属性设置,按下ok按钮后,终端上会出现以下提示:
代码: 全选
Traceback (most recent call last):
File "/usr/share/wicd/gtk/gui.py", line 666, in edit_advanced
if self.run_settings_dialog(dialog, ttype, networkid, networkentry):
File "/usr/share/wicd/gtk/gui.py", line 679, in run_settings_dialog
if self.save_settings(nettype, networkid, networkentry):
File "/usr/share/wicd/gtk/gui.py", line 644, in save_settings
if not networkentry.save_wireless_settings(networkid):
File "/usr/share/wicd/gtk/netentry.py", line 940, in save_wireless_settings
return self.advanced_dialog.save_settings(networkid)
File "/usr/share/wicd/gtk/netentry.py", line 591, in save_settings
encrypt_methods[self.combo_encryption.get_active()]['type'])
File "/usr/share/wicd/gtk/netentry.py", line 532, in set_net_prop
wireless.SetWirelessProperty(self.networkID, option, value)
File "/usr/lib/python2.7/dist-packages/dbus/proxies.py", line 145, in __call__
**keywords)
File "/usr/lib/python2.7/dist-packages/dbus/connection.py", line 651, in call_blocking
message, timeout)
dbus.exceptions.DBusException: org.freedesktop.DBus.Python.TypeError: Traceback (most recent call last):
File "/usr/lib/python2.7/dist-packages/dbus/service.py", line 707, in _message_cb
retval = candidate_method(self, *args, **keywords)
File "/usr/share/wicd/daemon/wicd-daemon.py", line 1067, in SetWirelessProperty
prop = misc.sanitize_config(prop)
File "/usr/local/lib/python2.7/dist-packages/wicd/misc.py", line 433, in sanitize_config
return s.translate(None, table)
TypeError: translate() takes exactly one argument (2 given)
将最后的那句错误提示复制到google上,在下面的网址里发现了参考的解决方法:
https://bbs.archlinux.org/viewtopic.php?pid=1097401。
看里面的讨论,貌似是代码的问题,可行的修改方法有两个:
方法一:看终端提示里,出错前,在/usr/share/wicd/daemon/wicd-daemon.py里的第1067行调用了misc的sanitize_config(prop)方法,对此作以下修改:
原 :
代码: 全选
prop = misc.sanitize_config(prop)
改为:
代码: 全选
prop = misc.sanitize_config(str(prop))
修改完毕后,终端下输入sudo service wicd restart后,即可解决问题。
方法二:看终端提示,出错前,调用了/usr/local/lib/python2.7/dist-packages/wicd/misc.py中的sanitize_config方法,定位到该方法的定义处,并作以下修改:
原 :
代码: 全选
def sanitize_config(s):
""" Sanitize property names to be used in config-files. """
allowed = string.ascii_letters + '_' + string.digits
table = string.maketrans(allowed, ' ' * len(allowed))
return s.translate(None, table)
改为:
代码: 全选
def sanitize_config(s):
""" Sanitize property names to be used in config-files. """
allowed = string.ascii_letters + '_' + string.digits
table = string.maketrans(allowed, ' ' * len(allowed))
return str(s).translate(None, table)
其实就是最后一句修改了。
之后在终端运行sudo service wicd restart,即可解决问题。