【问题标题】:"Failed building wheel for psycopg2" - MacOSX using virtualenv and pip“psycopg2 构建轮子失败” - MacOSX 使用 virtualenv 和 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 会处理标题。

感谢您的帮助或见解!

【问题讨论】:

标签: python django postgresql virtualenv psycopg2


【解决方案1】:

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

【讨论】:

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

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

  1. 用这个代替 pip:
sudo apt-get install libpq-dev
  1. 然后运行此命令:
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。

              【讨论】:

                猜你喜欢
                • 2021-12-16
                • 2016-11-14
                • 2020-04-12
                • 1970-01-01
                • 2020-09-07
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                相关资源
                最近更新 更多