0

CherryPyを使用してphpWebページのデータを生成および解析していますが、ローカルまたはSSH経由で複製できないというエラーが発生します(サーバーにログインし、プロンプトからpythonスクリプトを実行しても問題ありません)。

現在のスティッキーエラーメッセージは次のとおりです。

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

別のピクルスは前の行で正常にロードされ、両方のピクルスはさまざまな辞書とリストのリストを持つクラスオブジェクトを表します。しかし、これらの1つは機能し、もう1つは機能しません。

一般的にCherryPyでは、エラーメッセージを分離するための最良の方法は何ですか?そのURLから/cp/関数を実行でき、Webサーバーのエラーログを確認できますが、これら2つでも常にエラーメッセージ(または正しいエラー)が表示されるとは限りません。

一方、phpでは、このコードを使用して、リストのpythonリストを表すjsonオブジェクトを取得しています。

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

それは許容できる方法ですか?Pythonデータ構造からphp配列を渡して生成するための最良の方法は何ですか?

4

1 に答える 1

1

私はあなたが異なる問題を抱えていると思います:

  1. sys.pathsshを介して接続されている場合、およびWebアプリケーションを提供するために実行されているPythonで、PYTHONPATH()がPythonインタープリターで同じではないため、コードが機能していません。私はあなたがモジュールからデータを逆シリアル化しようとしているので、それは存在しますが(そうでなければ存在します)、の宣言ImportErrorがないので、おそらくそのモジュールと同じ名前のファイルが同じディレクトリにあり、そのファイルでを見つけ ます。シリアル化するときは、クラス宣言を保存せず、そのオブジェクトを再構築する方法だけを保存します。classDataclass Data

  2. 「正しいエラー」とはどういう意味ですか?環境が「本番環境」の場合、CherryPyはデフォルトで最後のエラーのトレースバックをログに記録します。もちろん、カスタムエラー処理を使用してデフォルトの動作を変更できます。

  3. 言語間の通信にはJSONを使用する必要があります。これは、両側で解析するのに非常に標準的で効率的です。

それがお役に立てば幸いです。

于 2012-06-29T22:46:48.113 に答える