簡體   English   中英

在 Windows 上為 PostgreSQL 12 安裝 PL/Python

[英]Install PL/Python on Windows for PostgreSQL 12

我一直在為一個項目研究 FHIR,我們正在使用 PostgreSQL 作為數據庫。 在閱讀文檔時,我開始了解 PL/Python 並決定試一試,但我無法安裝 python 擴展。

當我運行命令CREATE EXTENSION pypthon3u; 我收到以下錯誤

Could not load library "C:/Program Files/PostgreSQL/12/lib/plpython3.dll": The specified module could not be found.

我已經檢查了這個SO 答案,但它無濟於事。

我的 PostgreSQL 版本: PostgreSQL 12.2,由 Visual C++ build 1914 編譯,64 位

安裝的 Python 版本: 3.7.7(64 位)

操作系統信息: Windows 10 企業1909操作系統內部版本18363.657

對我來說,它看起來像是不正確的 Python 版本,但我正在安裝 python 3.7.* 版本,根據安裝目錄內的doc\installation-notes.html中指定的方式編譯 PostgreSQL。

任何幫助將不勝感激。

即使您使用 EDB 安裝程序的 Stack Builder 安裝 Python,您仍然必須按照說明“確保它們包含在啟動數據庫服務器的 PATH 變量中”。 我必須在系統級別執行此操作,因為我找不到為單個服務設置 PATH 的方法。

然后你還需要設置 PYTHONPATH ,這似乎沒有記錄。

所以我最終將c:\edb\languagepack\v1\Python-3.7添加到 PATH 並使用c:\edb\languagepack\v1\Python-3.7\Lib創建 PYTHONPATH 。

我必須添加包含 plpython3.dll 的目錄做系統/用戶變量(windows)。

我也在嘗試同樣的方法。 雖然我不是專家,而且我的錯誤有點不同,但這里有幾件事需要檢查:

  • share\extension\下,應該有plpython3u.controlplpython3u--1.0.sql能夠做CREATE EXTENSION plpython3u;
  • 確保您在上面的命令中沒有任何拼寫錯誤。
  • lib\下,應該有一個plpython3.dll 這可能是在上述步驟之后創建的。
  • 確保lib\在您的PATH中。
  • PYTHONHOME應該在系統/用戶環境中設置,或者應該在服務器啟動之前設置。 似乎版本沒有設置這個名稱那么重要。 plpython3.dll似乎在尋找一個python39.dll但我可以在 3.8 安裝中使用它。

我使用了 Postgres 的壓縮版本,所以下面是我運行服務器的方式。

set PATH=%PATH%;d:\pgsql\bin\;d:\pgsql\lib\
set PYTHONHOME=c:\DevTools\Python\Python38
pg_ctl -D d:\pgsql\pgdata -l logfile start

PS:沒有PYTHONHOME ,服務器崩潰。 服務器本身或psql重新啟動服務器,但我不確定pgAdmin

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM