在 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 模块的二进制部分。
我用过 brew
和 port
。通过其中之一安装任何 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
效果很好
$ 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,请按照以下步骤操作
- 转到应用程序文件夹
- Select Postgre.app
- 右键单击“显示包内容”
- Select 内容-->版本-->{版本号}-->bin
- 查看版本号
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
文件中的导入问题可能存在于两个方面 - 安装和导入。
- 如果您的
psycopg2
未安装或出现安装错误,请检查您的 PostgreSQL 安装是否有问题,link正在 pg_config
文件中 bin
PostgreSQL 安装文件夹或 openssl
安装及其 linkages.
- 如果
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 安装将起作用。
我正在尝试在我的 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 模块的二进制部分。
我用过 brew
和 port
。通过其中之一安装任何 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
效果很好
$ 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,请按照以下步骤操作
- 转到应用程序文件夹
- Select Postgre.app
- 右键单击“显示包内容”
- Select 内容-->版本-->{版本号}-->bin
- 查看版本号
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
文件中的导入问题可能存在于两个方面 - 安装和导入。
- 如果您的
psycopg2
未安装或出现安装错误,请检查您的 PostgreSQL 安装是否有问题,link正在pg_config
文件中bin
PostgreSQL 安装文件夹或openssl
安装及其 linkages. - 如果
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 安装将起作用。