为什么我在一台服务器上收到与 unicode 相关的 python 脚本验证错误,但在另一台服务器上却没有?

发布于 2024-10-14 07:03:43 字数 1125 浏览 3 评论 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 错误?

I'm running a python script to retrieve data from the Adwords API, and it runs successfully on a CentOS server. Using the same configuration file and script on a Ubuntu server, I get a unicode error. Is there some configuration setting that I need to change?

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>.

The configuration file is a JSON file:

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

What could be causing the line "1" to throw a unicode error on the Ubuntu server (but not the CentOS server)?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

浅忆 2024-10-21 07:03:44

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

)在传递给 adwords 配置解析器之前,您可以将值转换为 str() 吗?

Check your python, adsygoogle, and simplejson versions on each server. I'm guessing one of them is out of sync on one of your servers, causing AdWords to accept unicode strings on one but not the other (or causing the simplejson parse to generate unicode strings on one and not the other.)

Failing that, can you cast your values as str(), before passing to the adwords config parser?

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文