簡體   English   中英

找不到 pg_config 可執行文件

[英]pg_config executable not found

我在安裝 psycopg2 時遇到問題。 當我嘗試pip install psycopg2時出現以下錯誤:

Error: pg_config executable not found.

Please add the directory containing pg_config to the PATH

or specify the full executable path with the option:



    python setup.py build_ext --pg-config /path/to/pg_config build ...



or with the pg_config option in 'setup.cfg'.

----------------------------------------
Command python setup.py egg_info failed with error code 1 in /tmp/pip-build/psycopg2

但問題是pg_config實際上在我的PATH中; 它運行沒有任何問題:

$ which pg_config
/usr/pgsql-9.1/bin/pg_config

我嘗試將 pg_config 路徑添加到setup.cfg文件並使用我從他們的網站下載的源文件( http://initd.org/psycopg/ )構建它,我收到以下錯誤消息!

Error: Unable to find 'pg_config' file in '/usr/pgsql-9.1/bin/'

但它實際上是存在的!!!

我對這些錯誤感到困惑。 有人可以幫忙嗎?

順便說一句,我sudo所有的命令。 我也在 RHEL 5.5 上。

pg_configpostgresql-devel中(在 Debian/Ubuntu 中是libpq-dev ,在 Centos/Fedora/Cygwin/Babun 中是libpq-devel 。)

在 Mac OS X 上,我使用自制軟件包管理器解決了這個問題

brew install postgresql

你安裝了python-dev嗎? 如果您已經安裝了,請嘗試安裝libpq-dev

sudo apt-get install libpq-dev python-dev

來自文章: 如何在 virtualenv 下安裝 psycopg2

也在 OSX 上。 http://postgresapp.com/安裝 Postgress.app 但有同樣的問題。

我在該應用程序的內容中找到了pg_config並將目錄添加到$PATH

它位於/Applications/Postgres.app/Contents/Versions/latest/bin 所以這有效: export PATH="/Applications/Postgres.app/Contents/Versions/latest/bin:$PATH"

您可以使用pipconda在任何平台上安裝預編譯的二進制文件:

python -m pip install psycopg2-binary

或者

conda install psycopg2

請注意, psycopg2-binary pypi 頁面建議在生產環境中從源代碼構建:

二進制包是開發和測試的實用選擇,但在生產中建議使用從源代碼構建的包

要使用從源代碼構建的包,請使用python -m pip install psycopg2 該過程將需要幾個依賴項( 文檔)(強調我的):

  • 交流編譯器
  • Python 頭文件. 它們通常安裝在諸如python-dev之類的包中。 諸如error: Python.h: No such file or directory之類的消息表明缺少 Python 標頭。
  • libpq 頭文件 它們通常安裝在諸如libpq-dev之類的軟件包中。 如果您收到error: libpq-fe.h: No such file or directory您缺少它們。
  • pg_config程序:它通常由libpq-dev包安裝,但有時它不在PATH目錄中。 將它放在PATH中大大簡化了安裝,因此請嘗試運行pg_config --version :如果它返回錯誤或意外的版本號,則找到包含正確libpq版本附帶的pg_config的目錄(通常是/usr/lib/postgresql/XY/bin/ )並將其添加到PATH
 $ export PATH=/usr/lib/postgresql/XY/bin/:$PATH

您只需要pg_config來編譯psycopg2 ,而不是常規使用。

一切就緒后,只需運行標准即可:

 $ pip install psycopg2

或者,從包含源代碼的目錄中:

 $ python setup.py build $ python setup.py install

在 alpine 上,包含pg_config的庫是postgresql-dev 要安裝,請運行:

apk add postgresql-dev

這是在 CentOS 上對我有用的方法,首先安裝:

sudo yum install postgresql postgresql-devel python-devel

在 Ubuntu 上,只需使用等效的 apt-get 軟件包。

sudo apt-get install postgresql postgresql-dev python-dev

現在在 pip install 中包含 postgresql 二進制目錄的路徑,這應該適用於基於 Debain 或 RHEL 的 Linux:

sudo PATH=$PATH:/usr/pgsql-9.3/bin/ pip install psycopg2

確保包含正確的路徑。 就這樣 :)

對於 ubuntu 用戶,這是解決方案:

sudo apt install libpq-dev

它對我有用。

apt-get build-dep python-psycopg2

總結一下,我也面臨完全相同的問題。 在閱讀了很多 stackoverflow 帖子和在線博客之后,對我有用的最終解決方案是:

1) 安裝 psycopg2 之前應安裝 PostgreSQL(開發或任何穩定版本)。

2) pg_config 文件(該文件通常位於 PostgreSQL 安裝文件夾的 bin 文件夾中)PATH 必須在安裝 psycopg2 之前顯式設置。 就我而言,PostgreSQL 的安裝路徑是:

/opt/local/lib/postgresql91/

因此,為了顯式設置 pg_config 文件的 PATH,我在終端中輸入了以下命令:

PATH=$PATH:/opt/local/lib/postgresql91/bin/

此命令確保當您嘗試 pip install psycopg2 時,它會自動找到 pg_config 的 PATH。

我還在我的博客上發布了有關跟蹤的完整錯誤及其解決方案,您可能想參考。 它適用於 Mac OS X,但 pg_config PATH 問題是通用的,也適用於 Linux。

您應該在 Ubuntu 上添加 Postgres 中使用的 python 要求。 跑:

sudo apt-get install libpq-dev python-dev

您必須安裝libpq-dev/postgresql-libs ,這是用於編譯 C 程序以與 libpq 庫鏈接的頭文件和靜態庫,以便與 PostgreSQL 數據庫后端進行通信。

在 Arch 上,這將運行:

$ sudo pacman -S postgresql-libs

在 Debian 和 Ubuntu 上:

$ sudo apt-get install libpq-dev

在 Mac OS X 上:

$ brew install postgresql

在 Red Hat/CentOS/Fedora 上:

$ sudo yum install postgresql-devel

sudo apt-get install libpq-dev在 Ubuntu 15.4 上為我工作

在 Linux Mint 上sudo apt-get install libpq-dev為我工作。

更新 /etc/yum.repos.d/CentOS-Base.repo、[base] 和 [updates] 部分
添加排除=postgresql*

curl -O http://yum.postgresql.org/9.1/redhat/rhel-6-i386/pgdg-centos91-9.1-4.noarch.rpmr  
rpm -ivh pgdg-centos91-9.1-4.noarch.rpm

yum install postgresql  
yum install postgresql-devel

PATH=$PATH:/usr/pgsql-9.1/bin/

pip install psycopg2

對於那些運行 OS X 的人來說,這個解決方案對我有用:

1) 安裝 Postgres.app:

http://www.postgresql.org/download/macosx/

2) 然后打開終端並運行此命令,將 {{version}} 替換為 Postgres 版本號:

導出 PATH=$PATH:/Applications/Postgres.app/Contents/Versions/{{version}}/bin

例如

導出 PATH=$PATH:/Applications/Postgres.app/Contents/Versions/9.4/bin

我遇到了這個問題,因為我沒有安裝 postgres。 如果你有 brew install 運行

brew install postgresql

這應該可以解決問題。

只需運行以下命令:

sudo apt install libpq-dev

為我解決了這個問題

嘗試將其添加到 PATH:

PATH=$PATH:/usr/pgsql-9.1/bin/ ./pip install psycopg2

Ali 的解決方案對我有用,但我無法找到 bin 文件夾位置。 在 Mac OS X 上查找路徑的一種快速方法是打開 psql(頂部菜單欄中有一個快速鏈接)。 這將打開一個單獨的終端窗口,在第二行,您的 Postgres 安裝路徑將如下所示:

My-MacBook-Pro:~ Me$ /Applications/Postgres93.app/Contents/MacOS/bin/psql ; exit;

您的 pg_config 文件位於該 bin 文件夾中。 因此,在安裝 psycopg2 之前設置 pg_config 文件的路徑:

PATH=$PATH:/Applications/Postgres93.app/Contents/MacOS/bin/

或更新版本:

PATH=$PATH:/Applications/Postgres.app/Contents/Versions/9.3/bin

然后安裝 psycopg2。

我將把它留給下一個不幸的靈魂,盡管提供了所有解決方案,但他們仍無法解決這個問題。 只需使用sudo pip3 install psycopg2-binary

在安裝 psycopg2 之前,您需要升級您的 pip。 使用此命令

pip install --upgrade pip

在 MacOS 上,最簡單的解決方案是對 Postgres 包下的正確二進制文件進行符號鏈接。

sudo ln -s /Applications/Postgres.app/Contents/Versions/latest/bin/pg_config /usr/local/bin/pg_config

這是相當無害的,如果需要,所有應用程序都可以在系統范圍內使用它。

在 Mac OS X 上,如果您使用的是 Postgres 應用程序 ( http://postgresapp.com/ ):

export PATH=$PATH:/Applications/Postgres.app/Contents/Versions/latest/bin

無需在此命令中指定 Postgres 的版本。 它總是指向最新的。

pip install psycopg2

PS:如果更改沒有反映您可能需要重新啟動終端/命令提示符

資源

在 Arch Linux 上安裝python-psycopg2為我解決了這個問題:

pacman -S python-psycopg2

在 Windows 上,您可能需要安裝 Psycopg 的Windows 端口,這是psycopg 文檔中推薦的。

剛剛通過以下方式解決了 Cent OS 7 中的問題:

export PATH=$PATH:/usr/pgsql-9.5/bin

確保您的 PostgreSql 版本與上面的正確版本匹配。

這部分是之前提出的,為了清楚起見,在此處添加。

來自https://www.psycopg.org/docs/install.html的文檔。
他們建議運行: $ pip install psycopg2-binary

這為我解決了這個問題。

在這里,為了 OS X 的完整性:如果你從 MacPorts 安裝 PostgreSQL,pg_config 將在/opt/local/lib/postgresql94/bin/pg_config中。

當您安裝 MacPorts 時,它已經將/opt/local/bin添加到您的 PATH 中。

因此,這將解決問題: $ sudo ln -s /opt/local/lib/postgresql94/bin/pg_config /opt/local/bin/pg_config

現在pip install psycopg2將能夠毫無問題地運行pg_config

致那些在 macOS Catalina 上使用zsh shell 並且還安裝了postgres 應用程序的人:

打開~/.zshrc文件,並添加以下行:

export PATH="/Applications/Postgres.app/Contents/Versions/latest/bin:$PATH"

然后關閉所有終端,重新打開它們,您的問題就解決了。

如果您不想關閉終端,只需在您想繼續工作的任何終端中輸入source ~/.zshrc即可。

運行以下命令來解決找不到pg_config 可執行文件:-

sudo apt-get install --reinstall libpq-dev

sudo yum 安裝 postgresql-devel (centos6X)

pip install psycopg2==2.5.2

一個簡單的解決方案可以是

pip install psycopg2==2.7.5

對於 mac 用戶,擴展您的路徑變量以包含 PostgreSQL,例如export PATH=$PATH:/Library/PostgreSQL/12/bin

我建議您嘗試使用 Postgres.app。 ( http://postgresapp.com ) 這樣您就可以輕松地在 Mac 上打開和關閉 Postgres。 完成后,通過附加以下內容將 Postgres 的路徑添加到您的 .profile 文件中:

PATH="/Applications/Postgres.app/Contents/Versions/latest/bin:$PATH"

只有在將 Postgres 添加到路徑后,您才能嘗試在虛擬環境(使用 pip)或全局站點包中安裝 psycopg2。

Windows用戶缺乏答案。 這是我解決這個問題的方法。

首先像這樣將 PostgreSQL bin 文件夾添加到路徑變量中

set PATH=%PATH%;C:\Program Files\PostgreSQL\11\bin

用您的 Postgres 版本替換\11\

下一次運行

pip install pyscopg2

這至少讓我遇到了編譯錯誤。

更新:它看起來是 psycopg2 庫的一個問題,它的依賴關系在 python 3.8 中表現不佳。 https://github.com/psycopg/psycopg2/issues/990

如果您嘗試在虛擬環境中添加psycopg2依賴項,這將允許您的 python 項目連接到在您的 Mac 上單獨運行 postgresql 的 docker 或 kubernetes pod,並且對在您的 Mac安裝 postgresql 並不真正感興趣,這樣你可以得到 pg_config,這就是你所做的:

按照 pipenv 安裝的錯誤輸出中的建議安裝psycopg2_binary ,一切都會正常進行。

我很確定您遇到過與我相同的“問題”,因此我將為您提供極其簡單的解決方案...

在您的情況下,您需要添加到 $PATH (或作為命令參數)的實際路徑是:

/usr/pgsql-9.1/bin/pg_config

不是

/usr/pgsql-9.1/bin

例如,如果你之后運行 python setup.py 腳本,你會像這樣運行它:

python setup.py build_ext --pg-config /usr/pgsql-9.1/bin/pg_config build

可能為時已晚,但仍然是最簡單的解決方案。

后期編輯:

在進一步的測試中,我發現如果您最初在表單中添加 pg_config 的路徑

/usr/pgsql-9.1/bin

(在...../bin 之后沒有/pg_config)並運行 pip install 命令它將起作用。

但是,如果您隨后決定按照指示運行 python setup.py,則必須在 ...../bin 之后使用 /pg_config 指定路徑,即

python setup.py build_ext --pg-config /usr/pgsql-9.1/bin/pg_config build

這就是我設法安裝 psycopg2 的方式

$ wget http://initd.org/psycopg/tarballs/PSYCOPG-2-5/psycopg2-2.5.3.tar.gz
$ tar -xzf psycopg2-2.5.3.tar.gz
$ cd psycopg2-2.5.3
$ pip install .

對於 CentOS/RedHat 確保/etc/alternatives/pgsql-pg_config是一個完整的符號鏈接

我在Oracle Linux 7.9上安裝這個庫有很大的問題。 無論我在做什么,我都無法通過 pip 安裝 psycopg2。 所以我決定用這個命令通過 yum 安裝它:

yum install http://mirror.centos.org/centos/7/os/x86_64/Packages/python-psycopg2-2.5.1-4.el7.x86_64.rpm

使用此命令安裝了 psycopg2,我可以通過 ansible 創建 postgres 用戶 DB。 (我知道這就像第六十個答案,但我希望這個答案仍然可以幫助某人)。

在 Gentoo 你必須執行以下操作

# Install postgresql client libraries
sudo emerge postgresql-base

對於在 Django 應用程序上工作並部署到 AWS 時遇到此問題的任何人,本教程中描述的方法對我有用: https ://realpython.com/deploying-a-django-app-and-postgresql-to-aws-elastic -豆莖/

以下是作者對出現以下錯誤時的解釋:

Error: pg_config executable not found.

問題是我們嘗試安裝 psycopy2(Postgres Python 綁定),但我們還需要安裝 Postgres 客戶端驅動程序。 由於默認情況下沒有安裝它們,因此我們需要先安裝它們。

eb 將從項目根目錄中名為“.ebextensions”的文件夾中讀取自定義 .config 文件。 這些 .config 文件允許您安裝軟件包、運行任意命令和/或設置環境變量。 “.ebextensions”目錄中的文件應符合 JSON 或 YAML 語法,並按字母順序執行。

首先要做的是安裝一些包,這樣我們的 pip install 命令才能成功完成。 為此,讓我們創建一個名為 .ebextensions/01_packages.config 的文件:

packages:
  yum:
    git: []
    postgresql93-devel: []
    libjpeg-turbo-devel: []

EC2 實例運行 Amazon Linux,這是一種 Redhat 風格,因此我們可以使用 yum 來安裝我們需要的包。 現在,我們只需要安裝三個包——git、Postgres 客戶端和用於 Pillow 的 libjpeg。

對於 MAC 用戶 -

通過 HomeBrew 添加postgresql包后,您可能需要添加openssl路徑變量 -

export LIBRARY_PATH=$LIBRARY_PATH:/usr/local/opt/openssl/lib/

然后你可以再次pip install應該可以工作的psycopg2包。

如果您最近更新了 python 或更改了默認 python (比如說從 3.6 到 3.8)。 以下代碼

sudo apt-get install python-dev   OR    sudo apt-get install python3-dev

將為以前的 python 版本安裝/工作。

因此,如果您希望此命令適用於最近更新/更改的 python 版本,請嘗試在命令中提及特定版本,例如 python3.8

sudo apt-get install python3.8-dev  

在上面嘗試以下

pip install wheel
export PATH=/path/to/compiled/postgresql/bin:"$PATH"
sudo apt-get install libpq-dev
sudo apt-get install python3.x-dev    **Change x with your version, eg python3.8**
pip install psycopg2-binary
pip install psycopg2

以下步驟為我解決了這個問題(ubuntu 18.04)

  1. 安裝 postgres(如果沒有安裝,請參考這個
  2. 安裝 libpq-dev

sudo apt-get install libpq-dev

我發現這個頁面提供了在我的 mac 上安裝 PostgreSQL 的最佳說明,並且 pip install 命令在之后完美運行:

https://www.codefellows.org/blog/three-battle-tested-ways-to-install-postgresql

我通過運行以下命令解決了這個問題。

env LDFLAGS="-I/usr/local/opt/openssl/include -L/usr/local/opt/openssl/lib" pip install psycopg2

參考: https ://stackoverflow.com/a/39800677/4270698

如果您使用的是 mac,請確保您已在您的機器中安裝了 Postgresql。

您可以改用二進制文件,當 Django 嘗試將應用程序作為其依賴項的一部分安裝時,我遇到了 dockerizing 應用程序的問題,為了解決這個問題,我將此設置用於 requirements.txt,其中首先安裝了二進制文件,然后 django 執行不要嘗試再次安裝它:psycopg2-binary django gunicorn

對 redhat/fedora 系列使用postgresql-devel解決了這個問題。

yum install postgresql-devel

pip3 install psycopg2將自動獲取可能不適合您的項目的版本。
推薦使用pip3 install psycopg=='version_name'
pip3 install --upgrade pip找到正確的 psycopg2 版本,它可以工作。

在 MAC Mojave 上,如果您使用 brew 安裝了它,請執行brew info <your postgres>

它將向您顯示您應該設置的所有環境變量,只需復制粘貼這些命令,重新啟動您的 shell 即可!

快速了解 pip 的工作原理pip -> python2 和pip3 -> python3,所以如果你想在 python 3 上修復這個問題,你可以簡單地sudo pip3 install psycopg2這應該可以工作。

暫無
暫無

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

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