問題タブ [pyclips]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
552 参照

python - PyClips でのクリップ エラー メッセージの伝播

PyClips を使用して開発するのは非常に難しいと思います。Clips によってスローされる有用なエラー メッセージが、一般的な「構文エラー」メッセージに置き換えられているように見えるからです。これにより、PyClip を使用する場合、大規模なコードベースでのデバッグが非常に面倒になり、事実上不可能になります。

次の例を考えてみましょう。乗算演算子を含む非常に大きな式を書きましたが、誤って 2 番目の引数を追加するのを忘れていました。PyClips は、単に引数が不足していることを伝える代わりに、構文エラーがあることを伝えました。訂正するのに 1 秒かかるはずだったのに、間違いを探して大きな表情を探し回ったため、訂正するのに 5 分かかりました。

要約版は次のとおりです。

Clips では、役立つエラー メッセージが表示されます。

PyClips では、役に立たないエラー メッセージが表示されます。

Clipsによってスローされた実際のエラーをPyClipsに与えるにはどうすればよいですか?

0 投票する
3 に答える
4797 参照

python - pyclips を使用し、クリップを python モジュールとしてインポートする

私のシステムの事実とルールを生成するためにpyclipsを使用しています.. Pythonコード内でクリップを使用するために必要なPythonファイルを含むクリップディレクトリを含むpyclipsをインストールするためのすべての要件をダウンロードしました..

しかし、「 import clips 」または「 import pyclips.clips 」と書くと、「「 no module named clips 」というエラーが表示されます!!

ですから、インポートを正しくするために誰か助けてください。

c:/ の python フォルダーのライブラリーフォルダーにフォルダー pyclips を入れたと言いたいだけです。

0 投票する
1 に答える
1521 参照

python - PyClipsを使用して、Python関数を呼び出すためのルールアクティベーションを取得する方法

私はPyClipsを試していますが、Pythonと緊密に統合して、ルールがアクティブ化されたときにpython関数を呼び出すようにします。

これが私がこれまでに持っているものです:

ただし、「animal-is duck」という事実を主張すると、Python関数は呼び出されません。

私は何が間違っているのですか?

0 投票する
3 に答える
460 参照

python - PyCLIPS に Python メソッドを登録するデコレーター

PyCLIPS を利用して CLIPS を Python に統合します。Python メソッドは、 を使用して CLIPS に登録されclips.RegisterPythonFunction(method, optional-name)ます。いくつかの関数を登録する必要があり、コードを明確にしたいので、登録を行うデコレーターを探しています。

これが現在行われている方法です:

これが私がやりたい方法です:

メソッドのコーディングを保持し、それらを 1 か所に登録します。

NB: CLIPS プロセスが次のような別のプロセスで実行されるマルチプロセッサ セットアップでこれを使用します。

0 投票する
1 に答える
345 参照

python - .clp をインポートしてファクトを追加する

問題を解決するためにpythonとClipsを使用しています。これが私がやろうとしていることです:

Python から .clp ファイルを読み込んで実行しようとしています。データベースに基づいて事実を追加する必要もあります。したがって、.clpファイルにはルールが含まれており、私は使用しています

私のファイルをロードします。事実をクリップに主張する方法に行き詰まっています。また、事実に基づいて得られたものを保存するクリップの変数ファイナルもあります。他のコードを実行するには、それを python に戻す必要があります。

ありがとう

0 投票する
1 に答える
109 参照

python - pyCLIPS Fact-base をファイルに出力する

私はpyCLIPSを使用していますが、結果をアーカイブしたり、過去の結果を現在のもので分析したりするために、ファクトベースの内容全体を新しいファイルに出力する方法があるかどうか興味がありましたか?

前もって感謝します

0 投票する
0 に答える
126 参照

rule-engine - PyCLIPS: エラーから回復する方法

PyCLIPS を使用して、ECA サーバー (event-conditon-action) として機能するプログラムに CLIPS を統合しています。システム状態とともに、メッセージ バスでアクションを発行するルールをトリガーする場合とトリガーしない場合がある受信イベントがあります。

システム状態は、受信イベントに応じてスロットが変更されるインスタンスの形で現れます。

このソフトウェアは長寿命のサービスであることを意図していますが、ルールの実行中にエラーが発生した場合、たとえば名前の誤ったハンドラーによって次のようになります。

クリップ セッションが新しいメッセージに応答しなくなります。スロットは次を使用して更新されなくなりました:

clips.DebugConfig.WatchAll()デバッグ出力がない場合でも、クリップでは何も起こりません。

例:

これを回避したり、この状態から回復したりする可能性はありますか?

0 投票する
0 に答える
74 参照

python-2.7 - PyCLIPS を介して CLIPS から Python に大きな数値 (Python の int より大きい) を渡す

PyCLIPS は、非常に大きな数値を変換する前に int に変換しているようです。

変換はこちらPython -> CLIPS

しかし、ここでも変換 CLIPS -> Python

CLIPSにもPyCLIPSにも、長い間タイプがないというのは正しいですか? すべてが int にキャスト (切り捨て) されていますか? これはバグですか?

6442901632python-call を介して CLIPS から python に値を渡すと、python の値になるため、私は尋ねています0x7fffffff。または、私の 32 ビット Python が問題の原因ですか?

intPyClips 経由で CLIPS から Python にPython より大きい値を渡すにはどうすればよいですか?

0 投票する
0 に答える
1064 参照

python-2.7 - Windows Python 2.7 32 ビット用の CLIPS 6.30 に基づく PyCLIPS のインストール

CLIPS バージョン 6.30 をベースにしたバージョンの PyCLIPSがあることを知りました。同じ (または同様の) PyCLIPS バージョンを pip 経由でインストールすることもできます。こちらを参照してください

Linux では、どちらのアプローチも問題なく機能します。つまり、git clone + setup.py 経由でインストールするか、pip 経由でインストールします。Windows では、cygwin 64bit でのみ動作しました。pip install pyclips失敗しました(「-DWIN_MVC」フラグがないためだと思います。以下のステップ7を参照してください)。

ただし、Windows 7 64ビットで正確にPython2.7 32ビットにするために、「通常の」Windows pythonでCLIPS 6.30に基づくPyCLIPSを使用したいと思います。Visual Studio Express 2008 をインストールしました。

私が試したこと:

  1. git クローンhttps://github.com/almostearthling/pyclips.git
  2. CDパイクリップス
  3. git チェックアウト pyclips-1.1_clips-6.30
  4. ファイルを削除するclipssrc
  5. 公式リポジトリから CLIPS 6.30 ソースコードをダウンロードします
  6. clipssrc新しいフォルダを作成する フォルダ内に新しく作成されたpyclipsフォルダ
  7. coreフォルダの内容をフォルダに抽出しclipssrcます
  8. setup.py738 行あたりで、リストに追加'-DWIN_MVC'します。CFLAGS
  9. Windows用のパッチユーティリティをインストールし、PATHに追加します
  10. Visual Studio Express 2008 (32 ビット) コマンド プロンプトを起動します。
  11. pyclipsフォルダにcd
  12. 走るpython setup.py build
  13. ビルドが完了した場合(そうすべきです)、経由でインストールしますpython setup.py install

ビルドとインストールは完了しましたが、バージョン 6.30 より前の CLIPS で発生したように、大きな整数は依然としてエラーを引き起こします。2147483648これは、CLIPS が( sys.maxint+1python 2.7 32 ビットで)より大きい整数を処理できないことを意味します。

Visual Studio 2008 でのコンパイル中に、警告 " conversion from '__int64' to 'long', possible loss of data" が表示されました。対応する変数の型を に変更しましたlong long。警告は消えましたが、大きな整数のエラーはまだ存在しています。

CLIPS 6.30 ベースの PyCLIPS を Windows 7 64 ビットにインストールして、32 ビット Windows Python 2.7 で使用するにはどうすればよいですか?

編集 1: cygwin 32 ビットでインストールしようとしましたが、機能しませんでした。多分それは32/64ビットの問題ですか?クリップの 32 ビット バージョン (公式インストーラー経由でインストール) は、Windows 7 64 ビットで正常に動作します...

EDIT 2: sys.maxint を持つ python インタープリターでは動作するようですが、 sys.maxint を9223372036854775807持つインタープリターでは動作しないようです2147483647。興味深いことに、64 ビット Windows Python でさえ後者の値を持っています。

概要:

  • cygwin Python 64 ビット、maxint: 9223372036854775807、エラーなし
  • Cygwin Python 32 ビット、maxint: 2147483647、エラー
  • Windows Python 2.7 32 ビット、maxint: 2147483647、エラー
  • Windows Python 2.7 64 ビット、maxint: 2147483647、エラー
0 投票する
1 に答える
154 参照

pytest - CLIPS (クリア) コマンドが失敗する/pyclips で例外がスローされる

pytest を使用していくつかの単体テストを作成した pyclips / clips プログラムがあります。各テスト ケースには、イニシャルが含まclips.Clear()れ、その後に を介して実際のクリップ COOL コードが実行されますclips.Load(rule_file.clp)。各テストを個別に実行すると正常に動作します。

それでも、pytest にすべてのテストを実行するように指示すると、一部はClipsError: S03: environment could not be cleared. 実際、.py ファイル内のテストの順序によって異なります。後続のテスト ケースが例外をスローする原因となるテスト ケースがあるようです。

クリアが失敗するように、いくつかのクリップ コードがまだ「使用中」である可能性がありますか? 私はここでそれを読みました(clear)

CLIPS をクリアします。CLIPS 環境からすべての構成要素と関連するすべてのデータ構造 (ファクトやインスタンスなど) を削除します。クリアはいつでも安全に実行できますが、特定の構造は使用中に削除することができません。

これはここに当てはまりますか?(clear)コマンドが失敗する原因は何ですか?

編集:

問題を絞り込むことができました。これは、次の状況で発生します。

test_case_A は test_case_B の直前に来ます。test_case_A には次のtestようなものがあります

しかし、f_bio_putsに設定されています

(slot f_bio_puts (default [nil]))

したがって、[nil]最初に設定されているスロット変数のタイプをテストすると、(clear)コマンドが失敗するようです。何か案は?

編集2

何が問題を引き起こしているのかを知っていると思います。testラインです。クリップ ダイアログ ウィンドウで実行できるようにコードを調整しました。そして、経由でロードするときにこのエラーが発生しました(batch ...)

これがマスクされているのはpyclipsのバグだと思います。