繁体   English   中英

安装 psycopg2==2.8.1 时出错

[英]getting error when installing psycopg2==2.8.1

对此非常陌生,并试图从 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.

安装psycopg2-binary而不是psycopg2

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

sudo apt-get install libpq-dev

只是导出一些标志对我有用:

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

来自官方线程: https : //github.com/psycopg/psycopg2/issues/997

如果你看到类似下面的错误,那么你应该安装 libpq-dev

 sudo apt-get install libpq-dev 

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

我不得不求助于管道run pip

pipenv run pip install psycopg2-binary

你可以使用postgres 它是对 psycopg2 的高价值抽象。 它使用 psycopg2-binary。 pipenv install postgres 之后,您将在 pip 列表中看到下一个请求:

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:\>

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

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

> 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”中记录任何内容。

.

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM