簡體   English   中英

ImportError:用於創建引擎的 psycopg2

[英]ImportError: psycopg2 for creating engine

我一直在嘗試創建到我的 postgres 數據庫的連接。 通過這樣做,我通過運行此代碼得到以下錯誤

import pandas as pd
import numpy as np
import os
from sqlalchemy import create_engine, text
from datetime import datetime, timedelta
from pytz import timezone

postgres = create_engine("postgresql+psycopg2://user:password@xx.xx.xx.xx", connect_args={'sslmode':'require'})

出現以下錯誤消息:

Output exceeds the size limit. Open the full output data in a text editor
---------------------------------------------------------------------------
ImportError                               Traceback (most recent call last)
/User/Documents/github/new_project copy.py Cell 4 in <cell line: 8>()
      5 from datetime import datetime, timedelta
      6 from pytz import timezone
----> 8 postgres = create_engine("postgresql+psycopg2://user:password@xx.xx.xx.xx", connect_args={'sslmode':'require'})

File <string>:2, in create_engine(url, **kwargs)

File ~/Documents/github/new_project/.venv/lib/python3.9/site-packages/sqlalchemy/util/deprecations.py:309, in deprecated_params.<locals>.decorate.<locals>.warned(fn, *args, **kwargs)
    302     if m in kwargs:
    303         _warn_with_version(
    304             messages[m],
    305             versions[m],
    306             version_warnings[m],
    307             stacklevel=3,
    308         )
--> 309 return fn(*args, **kwargs)

File ~/Documents/github/new_project/.venv/lib/python3.9/site-packages/sqlalchemy/engine/create.py:560, in create_engine(url, **kwargs)
    558         if k in kwargs:
    559             dbapi_args[k] = pop_kwarg(k)
--> 560     dbapi = dialect_cls.dbapi(**dbapi_args)
    562 dialect_args["dbapi"] = dbapi
    564 dialect_args.setdefault("compiler_linting", compiler.NO_LINTING)
...
     67 from psycopg2 import extensions as _ext

ImportError: dlopen(/Users/myname/Documents/github/new_project/.venv/lib/python3.9/site-packages/psycopg2/_psycopg.cpython-39-darwin.so, 0x0002): Library not loaded: '/opt/homebrew/opt/postgresql/lib/libpq.5.dylib'
  Referenced from: '/Users/myname/Documents/github/new_project/.venv/lib/python3.9/site-packages/psycopg2/_psycopg.cpython-39-darwin.so'
  Reason: tried: '/opt/homebrew/opt/postgresql/lib/libpq.5.dylib' (no such file), '/usr/local/lib/libpq.5.dylib' (no such file), '/usr/lib/libpq.5.dylib' (no such file)

(由於隱私原因,我改變了路徑,但是邏輯沒有改變)

因此,錯誤似乎與psycopg2庫的安裝有關。 但是通過運行 pip3 列表,我得到 psycopg2 2.9.3 顯示為已安裝。

我在虛擬環境 (venv) 中運行代碼,但我也在本地進行了檢查,但並沒有消除問題。

另外要注意的是,這個問題以前沒有出現過。 可能是它與從 postgresql@13 升級到 postgresql@14 有某種關系,同時我又反轉了。 此外,我在帶有 M1 芯片的 macOS 上運行代碼。

我在 StackOverflow 和其他網站( 在 Mac OS (Yosemite) 上使用 psycopg2 時出現問題未加載導入 psycopg2 庫)中查找了大量文章,但沒有一篇可以解決問題。

由於我所有的嘗試都失敗了,例如重新安裝 psycopg2 和安裝 psycopg2-binary 都沒有解決我的問題,因此非常感謝可能的解決方案或錯誤來源的指示。

我發現在我的例子中,文件在另一個文件夾中。 我使用以下命令創建了符號鏈接:

sudo ln -s /Applications/Postgres.app/Contents/Versions/14/lib/libpq.5.14.dylib /usr/local/lib/libpq.5.dylib

現在它在 macos Monterey 12.4 上運行良好

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM