“ Psycopg2失败的构建轮”-使用 viralenv 和 pip 的 MacOSX

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

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

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

在运行该块之后,我得到以下错误:

断言错误


姜戈工具带制造车轮失效 为 Psycopg2运行 setup.py bdist _ eler

...

断言错误


精神病人的建筑轮子失败了 未能建立 django 工具带 Psycopg2

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

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

sudo apt-get install libpq-dev

正如 Ubuntu 的使用指导一样,因为我相信使用 brew 安装 postgreql 可以解决头部问题。

谢谢你的帮助和建议!

106087 次浏览

您的错误消息是否完整?未能从 pip 在 mac 上安装 Psycopg2的最常见原因是 pg _ config 不在 path 中。 顺便说一下,更推荐使用 macports 或 fink 安装 Psycopg2,因此不必担心 pg _ config、 libpq-dev 和 python-dev。

另外,是否使用 Python 3.5? 然后使用 pip 将您的轮盘升级到 > 0.25.0。

我在 Arch linux 上也遇到过同样的问题。我认为这不是操作系统的问题。不管怎样,我找到了过时的软件包,然后更新了。

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

希望这能帮上忙。

在 OS X 上,我可以在安装 Psycopg2之前简单地升级车轮来解决这个问题:

pip install --upgrade wheel

对于 Mac OS X 用户:

首先,通过在终端中运行这个命令来检查 postgreql 路径:

pg_config

如果查找失败,如何将 pg _ config 添加到路径。

2. 下一步通过在终端中运行这个命令来安装 Xcode Tools:

xcode-select --install

如果这两个问题都解决了,现在试着再次安装 Psycopg2

对于 OSX Sierra 用户来说,似乎一个 xcode 更新就是解决方案: 不能通过 pip 安装安装 Psycopg2软件包... 是因为 Sierra 吗?

我有同样的问题,这似乎是一个莫哈韦问题,我能够解决:

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

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

error screen

我用了下面的命令。

pip install psycopg2-binary==2.8.3

我面临着同样的问题,但是上面的答案对我不起作用。 这就是我在我的需求中所做的 Psycopg2-二进制 = = 2.7.6.1 ,运行良好

我尝试了以上所有的解决方案,但他们不适合我。我所做的就是将我的 Requments.txt 文件中的 Psycopg2版本从 psycopg2==2.7.4更改为 psycopg2==2.7.6

对于 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

TDLR

如果您不习惯安装 Python C 扩展,而且 psycopg2不是您工作的核心部分,那么尝试一下

pip install psycopg2-binary

本地建筑

Psycopg2是 C 扩展,因此在通过 pip 安装时需要进行编译。医生的构建先决条件部分解释了为了使通过 pip 进行安装成为可能,必须进行哪些操作。总结(对于 Psycopg 2.8.5) :

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

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

安装预编译车轮

另外,pip可以安装 预编译的二进制文件,这样就不需要编译(以及相关的设置)。它们可以这样安装:

pip install psycopg2-binary

医生说

Psycopg2-二进制包旨在让初学者开始使用 Python 和 PostgreSQL,而不需要满足构建需求。

但是我建议,如果你没有直接使用 Psycopg2,而只是作为一个依赖项,那么 psycopg2-binary通常是本地开发工作的 很好

总结性建议

阅读内容丰富的 安装文件,不仅可以克服安装问题,还可以了解在某些场景中使用预编译二进制文件的影响。

我在好几个包装上都有这个问题,包括 Psycopg2、 numpy 和熊猫。我只是将这个版本从 requments.txt 文件中删除,它就工作了。

所以我用 心理学家2-二进制代替了 Psycopg2-二进制 = = 2.7.6.1

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

必要时安装命令行工具:

xcode-select --install

那么

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

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

Django-heroku = = 0.3.1

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

sudo apt install libpq-dev python3.X-dev

其中 X 是子版本,

其次是:

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

好好享受吧!

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

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

我通过更新/安装 vs _ BuildTools 解决了我的问题。 错误图像

修正了通过安装 python3.7-dev: sudo apt install python3.7-dev,基于 链接

  • Python: 3.7
  • Ubuntu: 20.04.3 LTS