在 MacOS 10.9.5 上安装 Psycopg2 时出错

Error Installing Psycopg2 on MacOS 10.9.5

我正在尝试在我的 Macbook 上安装 Psycopg2,但出现错误。我在 Whosebug 上发现了很多相同的问题,但似乎没有答案。
我正在使用:

OS: MacOS 10.9.5
Python版本:3.4.3

我的错误代码是:

Running setup.py egg_info for package 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'.  Complete output from
command python setup.py egg_info:  running egg_info

writing pip-egg-info/psycopg2.egg-info/PKG-INFO
 
writing top-level names to
pip-egg-info/psycopg2.egg-info/top_level.txt
 
writing dependency_links to
pip-egg-info/psycopg2.egg-info/dependency_links.txt
 
warning: manifest_maker: standard file '-c' not found
 
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
/Users/sg/build/psycopg2 Storing complete log in
/Users/sg/Library/Logs/pip.log

你好像没有安装postgres,检查一下如何在你的系统中安装postgresql,方法之一是 brew install postgresql(如果你使用自制软件——推荐) 或从 postgresapp.com 下载 postgres 应用程序,pg_config 应该与 postgres 一起提供并且 psycopg2 正在尝试找到它。

OSX 不再包含 PostgreSQL,因此您需要以某种方式安装它以构建 psycopg2 模块的二进制部分。

我用过 brewport。通过其中之一安装任何 PostgreSQL 版本将使您能够构建模块。

如果您以其他方式安装 Postgres,您需要检查路径中的可执行文件 pg_config

您可以使用命令

检查pg_config是否存在
which -a pg_config

如果您安装了 Postgres 而上述命令没有 return 任何东西,您需要手动找到 pg_config 可执行文件并将其包含目录放入您的 PATH 中:

export PATH=/path/to/postgresql/bin/:$PATH

编辑:

如果您已经通过 homebrew 安装了它,但它不在您的路径中,您应该检查 /usr/local/bin 目录是否存在于您的路径中并且 add it 如果丢失

如果目录在那里,您可以尝试使用以下命令重新链接 postgres

brew unlink postgresql && brew link postgresql

要安装psycopg2你需要安装服务器(我已经安装PostgresApp

运行 手动命令在 PATH 环境变量中包含 pg_config 程序的路径,在我的例子中:

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

然后是运行

pip3 install psycopg2

编辑:

检查 pg_config 的目录:

which pg_config

如果您使用 Docker 并且不想在主机系统中安装 postgresql, 您可以尝试使用包 psycopg2-binary 并在容器中使用 postgresql

我整整一天都在为这个问题苦苦挣扎。然后我 运行 我在 Pillow library Issues 中找到的脚本并解决了问题。看看这个 https://github.com/python-pillow/Pillow/issues/3438#issuecomment-435169249

我 运行 pip install psycopg2-binary 效果很好

More info about the binary package

$ find / -name pg_config  2>/dev/null

/Applications/Postgres.app/Contents/Versions/9.3/bin/pg_config

$ export PATH=$PATH:/Applications/Postgres.app/Contents/Versions/9.3/bin/
$ pip install psycopg2

在我的 MAC 上,这成功了:

pip install psycopg2-binary

我对此有疑问。我所做的是确保 Python 与我的 pip 安装方式保持同步。它需要安装“pip3”。

要在 mac 中安装 psycopg2,请按照以下步骤操作

  1. 转到应用程序文件夹
  2. Select Postgre.app
  3. 右键单击“显示包内容”
  4. Select 内容-->版本-->{版本号}-->bin
  5. 查看版本号

export PATH=$PATH:/Applications/Postgres.app/Contents/Versions/{Version Number}/bin/

示例

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

然后运行以下

pip3 install psycopg2

这应该可以解决您的问题

即使我无法在 MacOs 10.15.6 上安装 psycopg2。

我尝试了 pip install psycopg2-binary 并且成功了。

我的问题是出于某种原因,在 VENV 中 pip install psycopg2 不起作用,但我发现 运行 这个命令来自 VENV

env LDFLAGS='-L/usr/local/lib -L/usr/local/opt/openssl/lib -L/usr/local/opt/readline/lib' pip install psycopg2

请允许我在 mac 上安装它。

在 big sur 上有同样的问题,就我而言,我已经安装了 postgresql。我以某种方式重新启动机器并重试安装 psycopg2,它工作正常。

安装 OpenSSL 和 运行:export LIBRARY_PATH=$LIBRARY_PATH:/usr/local/opt/openssl/lib/。此命令导出其路径。

psycopg2 安装及其在 .py 文件中的导入问题可能存在于两个方面 - 安装和导入。

  1. 如果您的 psycopg2 未安装或出现安装错误,请检查您的 PostgreSQL 安装是否有问题,link正在 pg_config 文件中 bin PostgreSQL 安装文件夹或 openssl 安装及其 linkages.
  2. 如果 psycopg2 正在安装,但您无法将其导入 .py 文件,则问题出在 libpq 及其 link 年龄。下面再现了总体步骤。您可以逐步检查它以了解哪个是您的错误来源,然后您可以从那里进行故障排除。

    以下是在 Mac OS Big Sur 上安装 psycopg2 时对我和我的团队成员有用的步骤。在开始之前确保你已经安装了 Xcode 命令行工具。如果没有,请从 Apple Developer 站点安装它。以下步骤假设您已安装自制软件。如果您还没有安装自制软件,请安装它。最后但并非最不重要的一点是,它还假定您已经在系统中安装了 PostgreSQL,如果没有则安装它。不同的人有不同的偏好,但official PostgreSQL site via Enterprise DB installer上的默认安装方法是大多数人的最佳方法。
  • 通过以下方式将 link年龄 pg_config 文件放入 .zshrc 文件中:
    export PATH="$PATH:/Library/PostgreSQL/12/bin:$PATH"。这样,您就可以 link使用 /Library/PostgreSQL/12/bin 文件夹中的 pg_config 文件。因此,如果您的 PostgreSQL 安装是通过其他方式进行的,例如 Postgres.app 或通过自制软件安装 Postgres,那么您需要在 .zshrc 文件中包含 link 到 pg_config 文件bin 该 PostgreSQL 安装的文件夹,因为 psycopg2 依赖于它。

  • 使用命令 brew install openssl 通过 Homebrew 安装 OpenSSL。原因是 libpq,作为 psycopg2 基础的库使用 openssl - psycopg2 不直接使用它。安装后,将以下命令放入 .zshrc 文件中:

    • export PATH="/usr/local/opt/openssl@1.1/bin:$PATH"
    • export LDFLAGS="-L/usr/local/opt/openssl@1.1/lib"
    • export CPPFLAGS="-I/usr/local/opt/openssl@1.1/include"
      通过这样做,您将在您的目录中创建必要的 linkages。这些命令是 brew 在您安装 openssl 时建议的,并直接从那里获取。
  • 现在是最重要的一步,即使用命令brew install libpq安装libpq。这将安装 libpq 库。 As per the documentation

libpq is the C application programmer's interface to PostgreSQL. libpq is a set of library functions that allow client programs to pass queries to the PostgreSQL backend server and to receive the results of these queries.

  • Link libpq 使用 brew link libpq,如果这不起作用则使用命令:brew link libpq --force.
  • 同时将以下
    export PATH="/usr/local/opt/libpq/bin:$PATH" 放入您的 .zshrc 文件中。这会为 libpq 图书馆创建所有必要的 linkages .
  • 现在重新启动终端或使用以下命令source ~/.zshrc

  • 现在使用命令pip install psycopg2。它会起作用。 这有效,即使您在 conda 环境中工作也是如此。

    N.B。 pip install psycopg2-binary应该避免因为as per the developers of the psycopg2 library

The use of the -binary packages in production is discouraged because in the past they proved unreliable in multithread environments. This might have been fixed in more recent versions but I have never managed to reproduce the failure.

如果您已经从官方安装程序安装了 PostgreSQL,但在通过 venv 创建的虚拟环境中通过 pip 安装 psycopg2 期间仍然出现此错误,请按照以下步骤操作:

  • 打开终端(这是在虚拟环境之外),使用命令找到pg_config的位置:sudo find / -name pg_config
  • 从输出列表中找到位置后,从虚拟环境中添加到 PATH:export PATH={location}:$PATH(确保将“{location}”替换为您发现的文件夹)
  • 然后继续在虚拟环境中安装psycopg2:pip install psycopg2
pip install psycopg binary

当我在终端中安装时,这对我有用。我花了大约 45 分钟才弄清楚不要像我看到的所有其他文档那样使用任何 - 或 []。

对于已经安装了 PostgressApp 但仍然出现相同错误的用户: 您需要按照设置文档中的说明执行设置中的第 3 步:https://postgresapp.com/

运行这两条命令设置你的PostgressApp的路径

sudo mkdir -p /etc/paths.d &&
echo /Applications/Postgres.app/Contents/Versions/latest/bin | sudo tee /etc/paths.d/postgresapp

记得重新启动所有终端windows以使更改生效。 之后运行照常

pip install psycopg2

这次它应该会按预期工作。

自从我偶然发现这个线程在 macOS 11.2 上安装 psycopg2 时遇到问题,解决方案不再适用于我,因为 Homebrew 的路径已经改变。 对我来说,这反而奏效了:

$ env LDFLAGS="-I/opt/homebrew/Cellar/openssl@1.1/1.1.1m/include -L/opt/homebrew/Cellar/openssl@1.1/1.1.1m/lib" pip install psycopg2

我认为将来这些路径可能会再次改变 ;)

如果您尝试在激活的 conda 环境中安装 psycopg2 并且遇到此错误,请 运行 conda install psycopg2 而不是 pip install psycopg2

在 Monterey 12.1 上为我工作

mac 计算机上没有安装 PostgreSQL 数据库,psycopg2 正在寻找 Postgres 文件。只需安装 Postgres 数据库,re-run pip install 即可。

https://postgresapp.com/downloads.html 从上面link 下载Postgres。 拖放到您的应用程序文件夹中。 初始化数据库最后一步是配置你的路径。

sudo mkdir -p /etc/paths.d && 回声 /Applications/Postgres.app/Contents/Versions/latest/bin |须藤三通 /etc/paths.d/postgresapp

这将要求您输入 mac 密码。

你可以在终端中copy-paste上面的link然后回车。 有关此 link 来源的更多信息,请查看以下 link: https://postgresapp.com/

重启终端

测试写入以下命令: psql -U postgres

该命令将提示您进入 Postgres 终端。

完成所有这些后,尝试重新安装 psycopg-2 它会起作用。

在我的例子中,错误的详细信息是:

#error architecture not supported ^ fatal error: too many errors emitted, stopping now [-ferror-limit=] 20 errors generated.

我告诉 pip 我正在使用什么架构,现在 psycopg2 可以毫无问题地安装。

ARCHFLAGS="-arch x86_64" pip3 install nltk

第一运行brew install postgresql, 然后 运行 pip install psycopg2

TLDR:

brew install postgresql
pip install psycopg2

你为什么会这样?

此问题主要发生在Mac带有 Apple Chip (M1) 的图书

一种解决方法是使用 brew 在 Mac 中安装 Postgres。 psycopg2 是一个与 Postgres 相关的库,因此安装完整版本的 Postgres 包括安装缺少的库。

尝试

brew install postgresql

这将在您的 Mac图书中本地安装 Postgres 服务器。

如果这给你一个错误,可能是因为你没有安装 brew,我强烈建议所有 Mac 用户安装它。

检查您是否安装了 brew:

brew -v 

如果这不起作用,请安装 brew:

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

使用 brew 安装 postgresql 后,再次使用 pip 安装库:

pip install psycopg2

这个问题可能会在未来得到解决,当对 Apple 芯片的支持增加时,默认的 pip 安装将起作用。