“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-dev
。 psycopg2
安装成功,其中任何一个都已安装。【参考方案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?