0

我正在使用 CherryPy 生成和解析 php 网页的数据,但出现无法在本地或通过 SSH 复制的错误(登录到服务器并从提示符运行 python 脚本可以正常工作)。

当前的粘性错误消息是:

File "modules/flex.py", line 335, in convert
    ref_data = cPickle.load(f2)
AttributeError: 'module' object has no attribute 'Data'

另一个泡菜在前一行中加载良好,两个泡菜都表示具有各种字典和列表列表的类对象。但是其中一个有效,另一个无效。

一般来说,对于 CherryPy,隔离错误消息的最佳方法是什么?我可以从它的 URL 运行 /cp/ 函数,并且可以查看网络服务器错误日志,但即使这两个也不总是给出错误消息(或正确的错误)。

另一方面,在 php 中,我使用此代码来检索表示 python 列表列表的 json 对象:

$obj = file_get_contents($senddata);
$sue = json_decode($obj);

这是可以接受的方法吗?从 python 数据结构传递和生成 php 数组的最佳方法是什么?

4

1 回答 1

1

我认为你有不同的问题:

  1. 您的代码不起作用,因为sys.path当您通过 ssh 和正在运行以服务 webapp 的 python 连接时,python 解释器中的 PYTHONPATH ( ) 不一样。我说这是因为您要反序列化来自模块的数据,该模块确实存在(否则将是ImportError)但没有class声明Data,可能与该模块同名的文件位于同一目录中并试图class Data 在该文件中找到。当你序列化你不保存类声明,只是如何重建该对象。

  2. “正确的错误”是什么意思?,当环境是“生产”时,CherryPy 默认记录最后一个错误的回溯,您当然可以通过自定义错误处理来更改默认行为。

  3. 您应该坚持使用 JSON 进行语言之间的通信,它非常标准且高效,可以在双方进行解析。

我希望这会有所帮助。

于 2012-06-29T22:46:48.113 回答