“psycopg2 构建***失败” - MacOSX 使用 virtualenv 和 pip

Posted

技术标签:

【中文标题】“psycopg2 构建***失败” - MacOSX 使用 virtualenv 和 pip【英文标题】:"Failed building wheel for psycopg2" - MacOSX using virtualenv and pip 【发布时间】:2016-03-22 03:57:36 【问题描述】:

我第一次尝试与其他几个人一起创建一个网站,但在尝试使用 Django/Python/VirtualEnv 时遇到了一个奇怪的错误。我已经为其他操作系统(例如 Ubuntu)找到了此问题的解决方案,但找不到适用于 Mac 的任何好的解决方案。

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

virtualenv -p python3 venv
source venv/bin/activate
pip install -r requirements.txt

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

断言错误


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

...

断言错误


psycopg2 的构建轮失败 构建 django-toolbelt psycopg2 失败

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

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

sudo apt-get install libpq-dev

按照 Ubuntu 使用的指示,我相信使用 brew 安装 postgresql 会处理标题。

感谢您的帮助或见解!

【问题讨论】:

我的答案在这里找到:***.com/questions/26288042/… 此解决方案适用于 wheel、venv 和 pip - ***.com/a/59596814/984471 运行 sudo apt-get install libpq-dev 和 pip install psycopg2-binary 为我工作,之后我也可以运行 pipenv install psycopg2 【参考方案1】:

我通过更新/安装 vs_BuildTools 解决了我的问题。该软件的链接在错误本身中给出。 Error Image

【讨论】:

请以文字形式发布错误日志,而不是发布图片链接。 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center。【参考方案2】:

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

    用这个代替 pip:
sudo apt-get install libpq-dev
    然后运行此命令:
pip install psycopg2

【讨论】:

apt 现在推荐 postgresql-doc-12 而不是 libpq-devpsycopg2 安装成功,其中任何一个都已安装。【参考方案3】:
sudo apt install libpq-dev python3.X-dev 

其中 X 是子版本,

这些后面应该跟着:

  pip install --upgrade wheel
  pip install --upgrade setuptools
  pip install psycopg2

享受!!!

【讨论】:

【参考方案4】:

TDLR

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

pip install psycopg2-binary

本地构建

psycopg2 是一个 C 扩展,所以通过 pip 安装时需要编译。 docs 的构建先决条件部分解释了必须做些什么才能使通过 pip 安装成为可能。总之(对于 psycopg 2.8.5):

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

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

安装预编译的***

或者,pip 可以安装pre-compiled binaries,这样就不需要编译(和相关的设置)。它们可以这样安装:

pip install psycopg2-binary

文档指出

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

但我建议psycopg2-binary 通常足够好如果您不直接使用 psycopg2 来进行本地开发工作,而只是作为依赖项。

结论性建议

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

【讨论】:

【参考方案5】:

我知道您要的是开发环境,但如果您要在服务器上部署,请说 Heroku。只需在项目的 requirements.txt 中添加以下行。

django-heroku==0.3.1

因为这个包本身会在服务器部署上安装所需的包,如 psycopg2。所以让服务器(heroku)来处理它。

【讨论】:

【参考方案6】:

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

必要时安装命令行工具:

xcode-select --install

然后

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

【讨论】:

【参考方案7】:

我在几个软件包上遇到了这个问题,包括 psycopg2、numpy 和 pandas。我只是从 requirements.txt 文件中删除了版本,它就可以工作了。

所以我只有 psycopg2-binary 而不是 psycopg2-binary==2.7.6.1

【讨论】:

我的项目中有这些包,并且在更新到 python 3.8 后激活 pipenv 虚拟环境有问题,我所有的尝试都未能激活 pipenv 虚拟环境,但是在删除 pandas、psycopg2 和 psycopg2 之后的版本号之后-requirements.txt 中的二进制文件【参考方案8】:

对于 MacOS 用户

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

如果您还没有安装 openssl,请使用 brew install openssl。 将openssl路径添加到LIBRARY_PATH
export LIBRARY_PATH=$LIBRARY_PATH:/usr/local/opt/openssl/lib/
使用 pip pip3 install psycopg2 安装 psycopg2

【讨论】:

在 ld 之后为我工作:找不到 -lssl 的库 在 11 测试版中为我工作 在 MacOS 10.15.3 上为我工作 先生,您是救命稻草! 你只是编程中的某种耶稣。谢谢!!!!它适用于 MacOS 11.1【参考方案9】:

我尝试了上述所有解决方案,但它们对我不起作用。我所做的是将我的 requirements.txt 文件中的 psycopg2 版本从 psycopg2==2.7.4 更改为 psycopg2==2.7.6

【讨论】:

你是在描述你做了什么但后来失败了?那不会回答这个问题,而是一个新问题。或者这是一个答案,如“这里描述的一切都失败了,但下面的作品。”? @Yunnosch,我认为他们是说提议的解决方案不起作用,所以他们发布了对他们有用的解决方案。也就是说,从 2019 年 7 月 7 日起,他们基本上拥有与 Utsav Preet 相同的解决方案。【参考方案10】:

我遇到了同样的问题,但上面的答案对我不起作用。 所以这就是我在 requirements.txt 中所做的 psycopg2-binary==2.7.6.1 效果很好

【讨论】:

【参考方案11】:

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

我使用了以下命令。

pip install psycopg2-binary==2.8.3

【讨论】:

它对我也适用于 python 3.6.5 和 pip 19.2.1 谢谢,@abhishek,这对我也适用,也适用于 python3.7.5、django2.2 和 pip19.3.1 对于 python 3.8 使用 pip install psycopg2-binary 使用 Python 3.7 在 Mojave 上为我工作【参考方案12】:

我遇到了同样的问题,这似乎是 Mojave 问题,我能够通过以下方式解决:

sudo installer -pkg /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg -target /

【讨论】:

感谢@farzad-farazmand。在 macOS 10.14.6 上运行上述命令后,帮助我安装了 pip install psycopg2==2.5.4【参考方案13】:

对于 OSX Sierra 用户,xcode 更新似乎是解决方案:Can't install psycopg2 package through pip install... Is this because of Sierra?

【讨论】:

我尝试了近 10 种不同的方法(包括从源代码构建 postgres,将库链接等到我的路径,实际上重新映像我的机器)就是这样!【参考方案14】:

对于 Mac OS X 用户:

1.首先通过在终端中运行以下命令来检查您的 postgresql 路径:

pg_config

如果查找失败,请查找如何将 pg_config 添加到您的路径。

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

xcode-select --install

如果您现在已经解决了这两个问题,请尝试再次安装 psycopg2

【讨论】:

两者都很好,但仍然有问题【参考方案15】:

在 OS X 上,我只需在安装 psycopg2 之前升级 wheel 即可解决此问题:

pip install --upgrade wheel

【讨论】:

【参考方案16】:

我在 Arch linux 上遇到了同样的问题。我认为这不是依赖于操作系统的问题。无论如何,我通过查找过时的软件包然后更新来解决这个问题。

pip uninstall psycopg2
pip list --outdated
pip install --upgrade wheel
pip install --upgrade setuptools
pip install psycopg2

希望这会有所帮助...

【讨论】:

在 OS X 上工作对我来说就像一个魅力,谢谢! (OS X 10.11.2,Python 3.5.1,pip 7.1.2) 也为我工作。我相信对于我特定的 virtualenv,wheel 包已经过时,因为setuptools 很好。所以可能只需要运行pip install --upgrade wheel 在 Ubuntu 18.04 上的工作就像一个魅力【参考方案17】:

您的错误信息是否完整?无法从 pip 在 mac 上安装 psycopg2 的最常见原因是 pg_config 不在路径中。 顺便说一句,使用macports或fink安装psycopg2是比较推荐的方式,这样你就不用担心pg_config、libpq-dev和python-dev了。

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

【讨论】:

以上是关于“psycopg2 构建***失败” - MacOSX 使用 virtualenv 和 pip的主要内容,如果未能解决你的问题,请参考以下文章

如何在 MacO、Python 3.5.1 上安装 pyQt?

maco类似linux的yum工具macports

模拟器无法在 MacO 上运行。模拟器声称操作系统已过时

使用 g++ 编译使用 fltk 和 OpenGL 的文件在 MacO 上会出错

升级MacO和Xcode时,迦太基更新失败,退出代码为1

当另外两个 2.X 也在 MacO 上时,如何将第三方库安装到 Python 3.X? [复制]