0

我正在运行一个 python 脚本来从 Adwords API 检索数据,它在 CentOS 服务器上成功运行。在 Ubuntu 服务器上使用相同的配置文件和脚本,我得到一个 unicode 错误。是否有一些我需要更改的配置设置?

Traceback (most recent call last):
  File "adwords_sync.py", line 230, in <module>
    adwords = AdWords(config)
  File "adwords_sync.py", line 37, in __init__
    self.client = AdWordsClient(headers=config.api_headers, config=config.api_config, path=config.api_config['home'])
  File "lib/python2.6/site-packages/adspygoogle/adwords/AdWordsClient.py", line 153, in __init__
    SanityCheck.ValidateConfigXmlParser(self._config['xml_parser'])
  File "lib/python2.6/site-packages/adspygoogle/common/SanityCheck.py", line 96, in ValidateConfigXmlParser
    raise ValidationError(msg)
adspygoogle.common.Errors.ValidationError: Invalid input for <type 'unicode'> '1', expecting 1 or 2 of type <str>.

配置文件是一个 JSON 文件:

{
  ...
  "api_config": {
    "home": "/srv/logs/pylons",
    "log_home": "/srv/logs/pylons",
    "soap_lib": "2",
    "xml_parser": "1",
    ...
  }
}

什么可能导致“1”行在 Ubuntu 服务器(但不是 CentOS 服务器)上引发 unicode 错误?

4

1 回答 1

0

检查每台服务器上的 python、adsygoogle 和 simplejson 版本。我猜其中一个在您的一台服务器上不同步,导致 AdWords 在一台服务器上接受 unicode 字符串,但在另一台服务器上不接受(或导致 simplejson 解析在一台服务器上生成 unicode 字符串,而不是在另一台服务器上生成 unicode 字符串。)

如果做不到这一点,您可以在传递给 adwords 配置解析器之前将您的值转换为 str() 吗?

于 2011-01-26T03:28:36.517 回答