在mac osx 10.9.5上安装Psycopg2

bel*_*ums 32 python postgresql macos psycopg2

我正在尝试在我的Mac书上安装Psycopg2.我仍然得到同样的错误.我在Stack Overflow上发现了很多相同的问题,但似乎没有答案可行.我认为它已经过时了.我正在使用:

Mac osx 10.9.5
Python 3.4.3
Run Code Online (Sandbox Code Playgroud)

我的错误代码是:

运行setup.py egg_info for package psycopg2错误:找不到pg_config可执行文件.

请将包含pg_config的目录添加到PATH,或使用以下选项指定完整的可执行文件路径:

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

或者使用'setup.cfg'中的pg_config选项.从命令python setup.py egg_info完成输出:运行egg_info

写pip-egg-info/psycopg2.egg-info/PKG-INFO

将顶级名称写入pip-egg-ps/psycopg2.egg-info/top_level.txt

将dependency_links写入pip-egg-info/psycopg2.egg-info/dependency_links.txt

警告:manifest_maker:找不到标准文件'-c'

错误:找不到pg_config可执行文件.

请将包含pg_config的目录添加到PATH

或使用以下选项指定完整的可执行文件路径:

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

或者使用'setup.cfg'中的pg_config选项.


命令python setup.py egg_info失败,错误代码为1/Users/stevengerrits/build/psycopg2存储完整的登录/Users/stevengerrits/Library/Logs/pip.log

Lab*_*ban 109

我跑了pip install psycopg2-binary它就像魅力一样

关于二进制包的更多信息

  • 我认为这并不能真正回答所提出的问题。请注意,根据[包描述](https://pypi.org/project/psycopg2/),“二进制包是开发和测试的实用选择,但在生产中建议使用从源构建的包”。[主页](https://www.psycopg.org/docs/install.html#psycopg-vs-psycopg-binary) 进一步解释了二进制版本可能由于捆绑其自己的“libssl”二进制文件而导致段错误。 (5认同)
  • 这对我来说是一个很好的答案,但我必须修复“_library not found for -lssl_”,这是我修复它的方法:`$ export LDFLAGS =“-L / usr / local / opt / openssl / lib”导出CPPFLAGS ="-I/usr/local/opt/openssl/include"` 然后 `$ pip install psycopg2-binary` (4认同)
  • 耶。我仅使用 pip install psycopg2 时遇到错误,但使用 psycopg2-binary 有效。 (2认同)

Vai*_*hra 49

您似乎没有安装postgres,检查如何在您的系统中安装postgresql,其中一种方法是 brew install postgresql(如果您使用自制软件推荐)或从postgresapp.com下载postgres应用程序,pg_config应该附带postgres和psycopg2是试图找到它.


Jon*_*nes 34

要安装,psycop2你需要安装服务器之前(我已经安装了PostgresApp)

在我的情况下,手动运行命令,包括env变量中的pg_config程序路径PATH:

export PATH=$PATH:/Applications/Postgres.app/Contents/Versions/9.4/bin/
Run Code Online (Sandbox Code Playgroud)

然后跑

pip3 install psycopg2
Run Code Online (Sandbox Code Playgroud)

编辑:

检查目录pg_config:

which pg_config
Run Code Online (Sandbox Code Playgroud)

  • 如果我删除@latest中的@(使用“pip install psycopg2-binary”),对我有用 (2认同)

Jos*_*ose 9

我的问题是,由于某种原因,在 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
Run Code Online (Sandbox Code Playgroud)

允许我在mac上安装它。


mne*_*cia 8

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

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

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

您可以pg_config使用该命令检查是否存在

which -a pg_config
Run Code Online (Sandbox Code Playgroud)

如果安装了Postgres并且上述命令没有返回任何内容,则需要手动查找pg_config可执行文件并将其包含的目录放在PATH中:

export PATH=/path/to/postgresql/bin/:$PATH
Run Code Online (Sandbox Code Playgroud)

编辑:

如果你已经通过自制软件安装了它,但它不在你的路径中,你应该检查/usr/local/bin你的路径中是否存在该目录,如果缺少则添加它

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

brew unlink postgresql && brew link postgresql
Run Code Online (Sandbox Code Playgroud)


ris*_*tor 8

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

  1. 如果您psycopg2没有安装或出现安装错误,请检查 PostgreSQL 安装是否存在问题,链接到PostgreSQL 安装或安装文件夹pg_config中的文件及其链接。binopenssl
  2. 如果psycopg2已安装但您无法将其导入.py文件中,则问题出libpq在其链接上。下面再现了总体步骤。您可以逐步检查以了解错误的根源,然后可以从那里排除故障。

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

  • 使用命令通过 Homebrew 安装 OpenSSL brew install 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"
      通过这样做,您将在目录中创建必要的链接。当您安装 openssl 时,brew 会建议这些命令,并且可以直接从那里获取这些命令。
  • 现在到了最重要的一步,就是libpq使用命令安装brew install libpq。这将安装 libpq 库。 根据文档

libpq 是 C 应用程序程序员与 PostgreSQL 的接口。libpq 是一组库函数,允许客户端程序将查询传递到 PostgreSQL 后端服务器并接收这些查询的结果。

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

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

    NBpip install psycopg2-binary应该避免,因为根据 psycopg2 库的开发人员

不鼓励在生产中使用 -binary 包,因为过去证明它们在多线程环境中不可靠。这可能已在更新的版本中修复,但我从未设法重现该故障。


小智 6

$ find / -name pg_config  2>/dev/null
Run Code Online (Sandbox Code Playgroud)

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

$ export PATH=$PATH:/Applications/Postgres.app/Contents/Versions/9.3/bin/
$ pip install psycopg2
Run Code Online (Sandbox Code Playgroud)


小智 5

如果您使用Docker而又不想postgresql在主机系统中安装,则可以尝试使用package psycopg2-binarypostgresql在容器中使用。


Cla*_*res 5

我一整天都在与这个问题作斗争。然后我运行了一个在 Pillow library Issues 中找到的脚本并解决了问题。检查一下 https://github.com/python-pillow/Pillow/issues/3438#issuecomment-435169249

  • 除了链接之外,您能否添加一些相关的解决方案?这将使您的答案更具描述性和自给自足。 (2认同)

小智 5

在我的 MAC 上,这样做就成功了:

pip install psycopg2-binary
Run Code Online (Sandbox Code Playgroud)

  • pyscopg2-binary 仅用于开发,不应在生产构建中使用 (2认同)