"psycopg2构建轮失败" - 使用virtualenv和pip的MacOSX

Tay*_*o0o 26 python django postgresql psycopg2 virtualenv

我第一次尝试与其他几个网站建立网站,并且在尝试使用Django/Python/VirtualEnv时遇到了一个奇怪的错误.我已经为其他操作系统找到了解决这个问题的方法,比如Ubuntu,但是找不到适合Mac的好解决方案.

这是正在运行的相关代码:

virtualenv -p python3 venv
source venv/bin/activate
pip install -r requirements.txt
Run Code Online (Sandbox Code Playgroud)

运行该块后,我收到以下错误:

Asse田


django-toolbelt的构建轮失败为psycopg2运行setup.py bdist_wheel

...

Asse田


psycopg2构建轮失败无法构建django-toolbelt psycopg2

我相信我已经安装了"django-toolbelt"和"psycopg2",所以我不确定它为什么会失败.

我能想到的唯一区别是我没有使用该命令

sudo apt-get install libpq-dev
Run Code Online (Sandbox Code Playgroud)

正如Ubuntu用法的指示,因为我相信用brew安装postgresql会处理标题.

感谢您的帮助或见解!

Rom*_*ain 53

对于 MacOS 用户

在尝试了上述所有方法(在 MacOS 10.14 上对我不起作用)后,该方法有效:

  • brew install openssl如果您还没有安装 openssl,请安装它。
  • 将 openssl 路径添加到LIBRARY_PATH
export LIBRARY_PATH=$LIBRARY_PATH:/usr/local/opt/openssl/lib/
Run Code Online (Sandbox Code Playgroud)
  • 使用 pip 安装 psycopg2 pip3 install psycopg2

  • 对于 Apple Silicon 上的 macOS,请改用“export LIBRARY_PATH=$LIBRARY_PATH:/opt/homebrew/opt/openssl/lib”。 (20认同)
  • 在 ld: 找不到 -lssl 的库之后为我工作 (2认同)

Nik*_*ios 44

我在Arch linux上遇到了同样的问题.我认为这不是操作系统依赖的问题.无论如何,我通过找到过时的包并更新然后修复了这个问题.

pip uninstall psycopg2
pip list --outdated
pip install --upgrade wheel
pip install --upgrade setuptools
pip install psycopg2
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助...

  • 在OS X上像我一样的魅力,谢谢!(OS X 10.11.2,Python 3.5.1,pip 7.1.2) (2认同)

小智 19

我也遇到同样的错误。使用Python 3.7.3和pip 19.1.1。

错误画面

我使用以下命令。

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

  • 对于 python 3.8 使用 pip install psycopg2-binary (3认同)
  • 它也适用于 python 3.6.5 和 pip 19.2.1 (2认同)
  • 谢谢,@abhishek,这对我也适用于 python3.7.5、django2.2 和 pip19.3.1 (2认同)

hah*_*med 14

对于Mac OS X用户:

1.首先在终端中运行此命令检查postgresql路径:

pg_config
Run Code Online (Sandbox Code Playgroud)

如果此操作失败,请查找如何将pg_config添加到路径中.

2.接下来通过在终端中运行此命令来安装Xcode Tools:

xcode-select --install
Run Code Online (Sandbox Code Playgroud)

如果您现在已经整理了这两个,请尝试再次安装psycopg2

  • 两者都很好,但仍然有问题 (2认同)

Far*_*and 14

我遇到了同样的问题,这似乎是莫哈韦问题,我可以通过以下方法解决:

sudo installer -pkg /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg -target /
Run Code Online (Sandbox Code Playgroud)

  • 为我工作。我有莫哈韦沙漠10.14.6 (3认同)

sna*_*erb 14

TDLR

如果您不习惯安装 Python C 扩展,并且psycopg2它不是您工作的核心部分,请尝试

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

本地建设

psycopg2 是一个 C 扩展,所以它在通过 pip 安装时需要编译。文档的构建先决条件部分解释了通过 pip 进行安装必须做的事情。总之(对于 psycopg 2.8.5):

  • 必须在机器上安装 C 编译器
  • 必须安装 Python 头文件
  • libpq头文件必须安装
  • pg_config必须安装该程序(它通常带有libpq标题)和$PATH.

满足了这些先决条件,pip install psycopg2就应该成功。

安装预编译的轮子

或者,pip可以安装预编译的二进制文件,以便不需要编译(和相关的设置)。它们可以像这样安装:

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

文档指出

psycopg2-binary 包旨在让初学者开始使用 Python 和 PostgreSQL,而无需满足构建要求。

但我建议,如果您不直接使用 psycopg2,而是将其用作依赖项,这对于本地开发工作psycopg2-binary来说通常已经足够了。

总结性建议

阅读内容丰富的安装文档,不仅可以解决安装问题,还可以了解在某些情况下使用预编译二进制文件的影响。


Joh*_*ohn 10

对于 MacOS 用户,这个问题有正确的解决方案:

必要时安装命令行工具:

xcode-select --install

然后

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


小智 10

运行上述所有命令后,我也遇到了同样的问题,但以下两个命令对我有用:

  1. 使用以下命令代替 pip:
sudo apt-get install libpq-dev
Run Code Online (Sandbox Code Playgroud)
  1. 然后运行这个命令:
pip install psycopg2
Run Code Online (Sandbox Code Playgroud)


小智 5

在OS X上,我能够通过在安装psycopg2之前升级滚轮来解决这个问题:

pip install --upgrade wheel
Run Code Online (Sandbox Code Playgroud)


Ada*_*rrh 5

对于OSX Sierra用户,似乎可以通过xcode更新来解决:无法通过pip install安装psycopg2软件包...这是因为Sierra吗?

  • 我尝试了将近10种不同的方法(包括从源代码构建postgres,将libs链接到我的路径,实际上是重新映像我的机器),这就是全部! (2认同)

Sni*_*_3B 1

你的错误信息完整吗?在 mac 上通过 pip 安装 psycopg2 失败的最常见原因是 pg_config 不在路径中。顺便说一句,使用 macports 或 fink 来安装 psycopg2 是更推荐的方式,所以你不必担心 pg_config、libpq-dev 和 python-dev。

另外,正在使用Python 3.5吗?然后使用 pip 将你的轮子升级到 > 0.25.0。