在我的Python應用程序中調用PostgreSQL PL/Python存儲過程時,它似乎在以用戶postgres
運行的單獨進程中執行。到目前爲止,這隻會產生副作用,我不得不讓我的日誌文件對數據庫用戶可寫,所以應用程序和存儲過程都可以寫入它。PostgreSQL PL/Python:在virtualenv中調用存儲過程
但是現在,我開始使用virtualenv
並增加了許多.pth
文件到我的~/.virtualenvs/virt_env/lib/python2.7/site-packages/
文件夾的路徑添加到我的模塊添加到Python路徑。
執行存儲過程時,用戶postgres
與我不在同一個虛擬環境中,所以存儲過程找不到我的模塊。我可以在global PostgreSQL environment修改PYTHONPATH
,但我不得不改變我每次切換虛擬環境 - 這是有點反對的virtualenv目的...
如何延長爲存儲過程Python路徑?
UPDATE:
一個similar question已被要求和分辨率有修改的Postgres PYTHONPATH環境變量;然而,似乎there is no standard way to specify environment variables for PostgreSQL;至少,它不是Mac OSX上可行的解決方案。
我不確定這個virtualenv路徑在多個plpython調用中保持活動,因爲解釋器在每次調用時都是新的。我想你假設我們從最初的所有plpython方法調用workon()? – Sid 2014-12-04 13:56:20
實際上,在一個會話(數據庫連接)中,所有的plpython函數共享一個解釋器,儘管它們獲得了全新的執行狀態(禁止全局GD數據共享字典) - 您不會爲每個查詢啓動一個新的解釋器。不要多次調用它,sys.path將繼續增長 – reedstrm 2015-01-22 18:28:21