【问题标题】:Is there a way to install psycopg2 using pip without installing postgres on host system有没有办法使用 pip 安装 psycopg2 而无需在主机系统上安装 postgres
【发布时间】:2020-02-17 03:15:27
【问题描述】:

在 macOS 上使用 pip 安装 psycopg2 失败并出现错误 pg_config executable not found 它似乎正在寻找 Postgres 安装。我不想在主机操作系统上安装 Postgres 并尝试将 Django 应用程序与 dockerized Postgres 连接。

当 Django 和 Postgres 在单独的容器中进行 docker 化时,该应用程序运行良好,但保持 Postgres 容器启动并与主机操作系统 Django 应用程序连接不起作用。我在 python virtualenv 中运行 Django。

【问题讨论】:

    标签: python postgresql macos docker psycopg2


    【解决方案1】:

    您不需要安装 postgres 服务器。
    Psycopg2 需要安装 pg_configlibpq,有一个二进制包 psycopg2-binary,其中包含所有依赖项:

    Archive:  psycopg2_binary-2.8.4-cp27-cp27m-manylinux1_i686.whl
      Length      Date    Time    Name
    ---------  ---------- -----   ----
         6281  10-20-2019 00:46   psycopg2/pool.py
        14082  10-20-2019 00:46   psycopg2/errorcodes.py
        14865  10-20-2019 00:46   psycopg2/sql.py
         4261  10-20-2019 00:46   psycopg2/_lru_cache.py
        43756  10-20-2019 00:46   psycopg2/extras.py
         2929  10-20-2019 00:46   psycopg2/_ipaddress.py
        17667  10-20-2019 00:46   psycopg2/_range.py
         4892  10-20-2019 00:46   psycopg2/__init__.py
         7084  10-20-2019 00:46   psycopg2/extensions.py
       864740  10-19-2019 20:56   psycopg2/_psycopg.so
         4408  10-20-2019 00:46   psycopg2/tz.py
         7258  10-20-2019 00:46   psycopg2/_json.py
         1382  10-20-2019 00:46   psycopg2/errors.py
          367  10-20-2019 00:46   psycopg2/compat.py
       738104  10-19-2019 20:56   psycopg2/.libs/libkrb5-083f5b6f.so.3.3
       106904  10-19-2019 20:56   psycopg2/.libs/libselinux-89f957db.so.1
       637892  10-19-2019 20:56   psycopg2/.libs/libssl-edc39324.so.1.1.1d
         9004  10-19-2019 20:56   psycopg2/.libs/libkeyutils-1-418112b0.2.so
       329164  10-19-2019 20:56   psycopg2/.libs/libpq-2be1e2df.so.5.11
       428784  10-19-2019 20:56   psycopg2/.libs/libldap_r-2-2e3da1cd.4.so.2.10.11
       251840  10-19-2019 20:56   psycopg2/.libs/libsepol-5bd02592.so.1
      3050920  10-19-2019 20:56   psycopg2/.libs/libcrypto-7d5df85f.so.1.1.1d
       171928  10-19-2019 20:56   psycopg2/.libs/libk5crypto-92a64cbe.so.3.1
       240952  10-19-2019 20:56   psycopg2/.libs/libgssapi_krb5-e4e762a2.so.2.2
        75576  10-19-2019 20:56   psycopg2/.libs/libz-83853723.so.1.2.3
         8852  10-19-2019 20:56   psycopg2/.libs/libcom_err-caa8c98e.so.2.1
        55692  10-19-2019 20:56   psycopg2/.libs/liblber-2-9ed85788.4.so.2.10.11
       138640  10-19-2019 20:56   psycopg2/.libs/libsasl2-fa5e3f6a.so.3.0.0
        42920  10-19-2019 20:56   psycopg2/.libs/libkrb5support-4db1495c.so.0.1
         2238  10-20-2019 00:56   psycopg2_binary-2.8.4.dist-info/LICENSE.txt
          107  10-19-2019 20:56   psycopg2_binary-2.8.4.dist-info/WHEEL
            9  10-20-2019 00:56   psycopg2_binary-2.8.4.dist-info/top_level.txt
         4297  10-20-2019 00:56   psycopg2_binary-2.8.4.dist-info/METADATA
         3029  10-19-2019 20:56   psycopg2_binary-2.8.4.dist-info/RECORD
    ---------                     -------
      7290824                     34 files
    

    【讨论】:

    • 我正在 linux Alpine 上尝试,但二进制安装无法正常工作.. 错误之一是错误:找不到 pg_config 可执行文件。
    【解决方案2】:

    psycopg2 使用libpq(和其他库)连接到 PostgreSQL 数据库,因此您至少需要某种形式的与 PostgreSQL 安装相关的库和头文件。没有这些库和头文件,psycopg2 就无法编译。 pg_config 只是告诉编译器在哪里可以找到这些依赖项。

    我不确定你反对安装 Postgres 的原因是什么,但另一种可能性是下载并安装 Postgres.app,它应该包含编译 psycopg2 所需的所有信息,很好地打包在你的 /Applications 文件夹中.

    这种情况的类似问答可以找到here

    【讨论】:

    • 澄清一下:当然不需要安装PostgreSQL 服务器
    • 安装 Postgres.app 就像重新安装服务器一样? python:3.6 docker镜像如何安装pycopg2,是否自带Postgres文件?
    • python:3.6 图像附带安装了libpq,因为libpq-dev 提供/usr/bin/pg_config(参见dpkg -S /usr/bin/pg_config
    猜你喜欢
    • 2022-06-30
    • 2020-07-05
    • 2015-09-18
    • 2018-09-23
    • 1970-01-01
    • 2020-05-06
    • 2014-05-09
    • 1970-01-01
    • 2016-03-20
    相关资源
    最近更新 更多