簡體   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