22

postgres 9.2 で、トリガーとなる Python プログラムを作成しようとしています。外部プログラム (ローカル ディスク上の exe) を実行したいので、python を使用して実行しています。次のような単純なプログラムを作成しようとすると:

CREATE FUNCTION one ()
RETURNS int
AS $$
# PL/Python function body
$$ LANGUAGE plpythonu;

エラーが発生します:

ERROR:  language "plpythonu" does not exist
HINT:  Use CREATE LANGUAGE to load the language into the database.

私が実行すると:

CREATE LANGUAGE plpythonu

エラーが発生します:

ERROR:  could not access file "$libdir/plpython2": No such file or directory

Windows 7 と python 2.5 を使用しています。

私は多くの場所を見てきましたが、解決策を見つけることができません。

何か案は?

4

5 に答える 5

10

文字通り数日前にこの問題を解決しました。解決策はかなり複雑です。ここに行きます。

  1. システムにのみ python 3.2.* バージョンをインストールします。
  2. Postgresql では、「CREATE LANGUAGE plpython3u」コマンドを使用して、Python 3 言語サポートをインストールします。多くの場合、次のエラー「".....\plpython3.dll をロードできません" エラー 126 が表示されます。(正しくインストールされている場合、エラーは表示されないことに注意してください。)

  3. 上記のエラーが発生した場合は、python インストール ディレクトリ (デフォルトは C:\python32) に移動し、DLL のフォルダーで「python3.dll」を探します。このファイルを Postgres のインストール ディレクトリにある Postgresql の「lib」フォルダにコピーします (デフォルトは c:\program files\postgres\9.x\lib\")。このコピーしたファイルの名前を python32.dll に変更します。

  4. 「CREATE LANGUAGE plpython3u」コマンドを再度実行します。今回はうまくいくはずです。

確認するには、postgresql のシステム テーブルの pg_available_extensions ビューを調べてください。plpython3u を含む行には、「インストールされているバージョン」列にバージョン番号が含まれている必要があります。

注 : これは plpython3u 言語でのみ機能します。plpython2u の同様のプロセスは知りません。

于 2013-02-04T07:41:29.930 に答える
8

plpython3でこれを解決するには、次のことを行う必要がありました。

  • Python3.2をインストールします
  • 走るCREATE LANGUAGE plpython3u

更新:私はここにもっと良い説明を書きました:https ://stackoverflow.com/a/24218449/398670

于 2013-01-11T02:33:43.450 に答える
5

Postgres は Python の ActiveState ディストリビューションを使用します。ほとんどの場合、2.5 が古すぎて Postgres が plpython dll を読み込めないか、適切な python がなかったためインストールできませんでした。最近のpostgresは、2.xではなくPython3に対してbuil6だと思います。postgres lib ディレクトリで plpython3.dll を調べて、必要なものを見つけることができます。

于 2012-12-31T22:16:00.763 に答える