PythonアプリケーションでPostgreSQLPL/ Pythonストアドプロシージャを呼び出すと、ユーザーとして実行されている別のプロセスで実行されているようpostgres
です。これまでのところ、これには、自分自身とデータベースユーザーの両方がログファイルを書き込み可能にする必要があるという副作用しかありませんでした。そのため、アプリケーションとストアドプロシージャの両方がログファイルに書き込むことができます。
しかし今、私は使用を開始し、モジュールへのパスをPythonパスにvirtualenv
追加するいくつかの.pth
ファイルをフォルダーに追加しました。~/.virtualenvs/virt_env/lib/python2.7/site-packages/
ストアドプロシージャが実行されると、ユーザーpostgres
は私と同じ仮想環境にいないため、ストアドプロシージャは私のモジュールを見つけられません。グローバルPostgreSQL環境PYTHONPATH
で変更できますが、仮想環境を切り替えるたびに変更する必要があります。これは、virtualenvの目的に反します...
ストアドプロシージャのPythonパスを拡張するにはどうすればよいですか?
更新:
同様の質問があり、PostgresでPYTHONPATH環境変数を変更するという解決策がありました。ただし、PostgreSQLの環境変数を指定する標準的な方法はないようです。少なくとも、MacOSXでは実行可能なソリューションではありません。