安装psycopg2 == 2.8.1时出现错误

时间:2019-04-08 21:22:13

标签: python psycopg2 pipenv

对此非常陌生,并尝试从Tut中学习,我正在尝试为Flask构建安装依赖项,并在终端上出现错误

我要安装以下内容

pipenv install flask flask-sqlalchemy psycopg2 flask-migrate flask-script marshmallow flask-bcrypt pyjwt

我已检查是否安装了Python,PostSQL,pipenv并收到以下错误消息

An error occurred while installing psycopg2==2.8.1 --hash=sha256:3648afc2b4828a6e00d516d2d09a260edd2c1e3de1e0d41d99c5ab004a73d180 --hash=sha256:5329b4530e31f58e0eafc55e26bbef684509bcc3be41604e45c0b98c297dc722 --hash=sha256:7c1ae1669d11105a002f804bebd7432f8dc7473459aa405164c6b44a922decd5 --hash=sha256:8af13498e32a00d0a66e43b7491c15231b27ab964ee4d2277a4a2dbadfb2c482 --hash=sha256:9d5489867bd5f6d6c6191a4debd8de9a5c03a9608cce3f4d7133e29e6bd4ec27 --hash=sha256:a17bfc9faffcca0ad9360c1ad97ab61ede583aa954715e8e436ffd80046661ff --hash=sha256:b4a475ce87eabc0607e068a3c704d0aa0820237ed78d493b8e2d880eb73cd7fe --hash=sha256:c49d66e97affdc80d084b3b363f09f17db621418f0b8e0524b06c54959e2094d --hash=sha256:d13fbc3d533656cfdf094e13c1b0f40917b72813755ba780971ba0ce04280ac4 --hash=sha256:e1e4fe6e8ab9f9c7d28514d007f623999d2dd6b5b81069dd4f9d30dbdd6f7069 --hash=sha256:e67d60cb1a32f5fd8fcea935cf9efb1d1c26f96203b0ca2ae98c4c40ef8d8eac! Will try again.

7 个答案:

答案 0 :(得分:1)

安装psycopg2-binary而不是psycopg2

答案 1 :(得分:1)

您需要预先安装以下编译器:

sudo apt-get install libpq-dev

答案 2 :(得分:1)

我不得不求助于run pip

pipenv run pip install psycopg2-binary

答案 3 :(得分:0)

如果看到类似以下的错误,则应安装libpq-dev

 sudo apt-get install libpq-dev 
  

错误:b'您需要安装postgresql-server-dev-NN来构建服务器端扩展,或者需要libpq-dev来构建客户端应用程序。\ n'“,'------- ---------------------------------','错误:命令错误,退出状态为1:python setup.py egg_info检查日志以获取完整的命令输出。']

答案 4 :(得分:0)

仅导出一些标志对我有用:

export LDFLAGS="-L/usr/local/opt/openssl/lib" export CPPFLAGS="-I/usr/local/opt/openssl/include"

来自官方主题:https://github.com/psycopg/psycopg2/issues/997

答案 5 :(得分:0)

U可以使用postgres。它是对psycopg2的高价值抽象。并且它使用了psycopg2-binary。 pipenv安装postgres 后,您将在点列表中看到下一个要求:

postgres        3.0.0                                                                                    
psycopg2-binary 2.8.4                                                                                    
psycopg2-pool   1.1

二进制软件包是开发和测试的实际选择,但在生产中,建议使用从源构建的软件包。因此,请勿在生产中仅使用psycopg2-binary。

# project/settings.py
DATABASES = {
  'default': {
  'ENGINE': 'django.db.backends.postgresql',
  'NAME': 'postgres',
  'USER': 'postgres',
  'PASSWORD': 'postgres',
  'HOST': 'db',
  'PORT': 5432
  }
}

额外: 您可以在Windows上通过pipenv使用psycopg2版本2.7或以上版本。

PS D:\> pipenv shell
Creating a virtualenv for this project…
Pipfile: D:\Pipfile
Using c:\python\python37\python.exe (3.7.6) to create virtualenv…
[=== ] Creating virtual environment...created virtual environment CPython3.7.6.final.0-64 in 2093ms

  creator CPython3Windows(dest=D:\-_SHv_4lM, clear=False, global=False)

  seeder FromAppData(download=False, pip=latest, setuptools=latest, wheel=latest, via=copy, app_data_dir=C:\Users\parfeniukink\AppData\Local\Temp\tmpnwrfdufn\seed-app-data\v1)

  activators BashActivator,BatchActivator,FishActivator,PowerShellActivator,PythonActivator,XonshActivator

Successfully created virtual environment!
Virtualenv location: D:-_SHv_4lM
Creating a Pipfile for this project…
Launching subshell in virtual environment…
Windows PowerShell
Copyright (C) Microsoft Corporation. All rights reserved.

Try the new cross-platform PowerShell https://aka.ms/pscore6

PS D:\> pipenv install psycopg2
Installing psycopg2…
Adding psycopg2 to Pipfile's [packages]…
Installation Succeeded
Pipfile.lock not found, creating…
Locking [dev-packages] dependencies…
Locking [packages] dependencies…
Success!
Updated Pipfile.lock (59b6f6)!
Installing dependencies from Pipfile.lock (59b6f6)…
  ================================ 1/1 - 00:00:00
PS D:\> pip list
Package    Version
---------- -------
pip        20.0.2
psycopg2   2.8.4
setuptools 45.2.0
wheel      0.34.2
PS D:\>

答案 6 :(得分:0)

我最近在macOS 10.15(Catalina)上遇到了同样的问题。就我而言,问题与OpenSSL库的先前升级有关,该库已将新版本安装到系统中的非标准位置。无法找到SSL库, psycopg2 编译任务抱怨很多错误。

在这种情况下和类似情况下的解决方案是告诉编译器包含文件和库位于何处,可以通过正确设置 LDFLAGS CPPFLAGS 环境来完成变量。例如:

> export LDFLAGS="-L/usr/local/opt/openssl/lib"
> export CPPFLAGS="-I/usr/local/opt/openssl/include"

如果在系统中找不到OpenSSL,则可能必须先通过brew install openssl(macOS),apt install libssl-dev(Linux Ubuntu)或任何最方便的过程安装该库。操作系统。

一旦安装了库并正确设置了环境, pipenv 最终应该能够安装 psycopg2

> pipenv install psycopg2

在此线程的其他答案中,还有其他解决方案建议,但是请注意,即使它们起作用,其中一些也会带来问题。例如,我们可以尝试通过以下方式安装 psycopg2-binary 而不是 psycopg2

> pipenv install psycopg2-binary

但是请注意,此解决方案仅对开发环境有效,不应在生产中使用。实际上,我们从psycopg2主页上看到:

二进制包是开发和测试的实际选择,但在生产中,建议使用从源代码构建的包。

通过 pip 安装 psycopg2-binary ,例如:

pipenv run pip install psycopg2-binary

甚至可能更糟,因为当我们使用 pipenv 时,可以确保正确记录所有依赖项。但是,如果像上面的命令那样将安装任务委托给 pip ,则“ Pipfile”中不会记录任何内容。