【问题标题】:Error Installing Psycopg2 on MacOS 10.9.5在 MacOS 10.9.5 上安装 Psycopg2 时出错
【发布时间】:2016-02-25 07:15:52
【问题描述】:

我正在尝试在我的 Macbook 上安装 Psycopg2,但出现错误。我在 StackOverflow 上发现了很多相同的问题,但似乎没有答案。
我正在使用:

操作系统:MacOS 10.9.5
Python 版本:3.4.3

我的错误代码是:

Running setup.py egg_info for package psycopg2  Error: pg_config
executable not found.

Please add the directory containing pg_config to the PATH or specify
the full executable path with the option:

python setup.py build_ext --pg-config /path/to/pg_config build ...
 
or with the pg_config option in 'setup.cfg'.  Complete output from
command python setup.py egg_info:  running egg_info

writing pip-egg-info/psycopg2.egg-info/PKG-INFO
 
writing top-level names to
pip-egg-info/psycopg2.egg-info/top_level.txt
 
writing dependency_links to
pip-egg-info/psycopg2.egg-info/dependency_links.txt
 
warning: manifest_maker: standard file '-c' not found
 
Error: pg_config executable not found.

Please add the directory containing pg_config to the PATH or specify the full executable path with the option:
 
python setup.py build_ext --pg-config /path/to/pg_config build ...
 
or with the pg_config option in 'setup.cfg'.
 
---------------------------------------- 
Command python setup.py egg_info failed with error code 1 in
/Users/sg/build/psycopg2 Storing complete log in
/Users/sg/Library/Logs/pip.log

【问题讨论】:

标签: python macos postgresql psycopg2


【解决方案1】:

你似乎没有安装 postgres,检查如何在你的系统中安装 postgresql,方法之一是 brew install postgresql(如果您使用自制软件-推荐) 或从 postgresapp.com 下载 postgres 应用程序,pg_config 应该与 postgres 一起提供,并且 psycopg2 正在尝试找到它。

【讨论】:

  • 警告:postgresql-9.4.5_2 已经安装,只是没有链接给终端
  • 您如何注意到没有安装 postgres 是问题所在,我无法阅读与错误消息相关的任何内容
  • pg_config executable 这行通常意味着找不到 python 链接到的 postgres 安装。
【解决方案2】:

OSX 不再包含 PostgreSQL,因此您需要以某种方式安装它以构建 psycopg2 模块的二进制部分。

我同时使用了brewport。通过其中之一安装任何 PostgreSQL 版本都可以构建模块。

如果您以其他方式安装 Postgres,则需要检查路径中的可执行文件 pg_config

您可以使用命令检查pg_config是否存在

which -a pg_config

如果您安装了 Postgres 并且上述命令没有返回任何内容,您需要手动找到 pg_config 可执行文件并将其包含目录放入您的 PATH 中:

export PATH=/path/to/postgresql/bin/:$PATH

编辑:

如果您已经通过 homebrew 安装了它,但它不在您的路径中,您应该检查 /usr/local/bin 目录是否存在于您的路径中,如果没有则检查 add it

如果目录在那里,你可以尝试使用以下命令重新链接 postgres

brew unlink postgresql && brew link postgresql

【讨论】:

  • 感谢您的帮助。我已经用我的终端安装了 postrgresql 和 psycopg2。当我尝试将 Psychopg2 添加到我的 pycharm 解释器时,我仍然收到错误..
  • 你应该检查你在pycharm中使用的解释器。如果您安装了多个版本的python,则需要配置pycharm 以选择正确的版本。您可以通过在搜索框中搜索 interpreter 并编辑 Project: $projectName -> Project Interpreter 在首选项中执行此操作
  • 是的,我知道。我现在唯一需要知道的是如何在特定版本的 python 中通过 pip 安装 psycopg2。对于 python 2.5,它是成功的。但我需要为 python 3.4 安装它。我正在使用谷歌寻找解决方案..
  • 如果你知道pip安装在目标python版本中,你可以简单地执行:/path/to/3.4/python /usr/bin/pip install psycopg2如果没有,你可以按照pip installation instruction运行所需版本的get-pip.py .
  • 感谢您的帮助。我收到错误“无法打开文件'usr/bin/pip'”
【解决方案3】:

要安装psycopg2,你需要先安装服务器(我已经安装了PostgresApp

手动运行命令,包括 PATH 环境变量中的 pg_config 程序的路径,在我的例子中:

export PATH=/Applications/Postgres.app/Contents/Versions/@latest/bin/:$PATH

然后运行

pip3 install psycopg2

编辑:

查看pg_config的目录:

which pg_config

【讨论】:

  • 如果我删除@latest 中的@(使用pip install psycopg2-binary)对我有用
【解决方案4】:

如果您使用 Docker 并且不想在主机系统中安装 postgresql, 您可以尝试使用包psycopg2-binary 并在容器中使用postgresql

【讨论】:

    【解决方案5】:

    我为这个问题奋斗了整整一天。然后我运行了一个在 Pillow library Issues 中找到的脚本并解决了这个问题。看看这个 https://github.com/python-pillow/Pillow/issues/3438#issuecomment-435169249

    【讨论】:

    • 您能否在链接之外添加一些相关的解决方案?这将使您的答案更具描述性和自给自足。
    • 链接的github问题中提到的错误与OP提到的错误有何相似之处?我正在查看 github 问题,但没有看到连接。
    • 我真的不知道连接以及为什么sudo installer -pkg /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg -target / 脚本有效。我只是在安装 psycopg2 时遇到了同样的问题。如果解决方案适合某人,我很乐意提供帮助。如果我违反了规则或政策,请告诉我,我会删除帖子。
    【解决方案6】:

    我跑了pip install psycopg2-binary,它就像魅力一样工作

    More info about the binary package

    【讨论】:

    • 是的。我只是 pip install psycopg2 但使用 psycopg2-binary 工作时遇到错误。
    • 我认为这并不能真正回答所提出的问题。请注意,根据package description,“二进制包是开发和测试的实用选择,但在生产中建议使用从源代码构建的包。” homepage 进一步解释说,由于捆绑了自己的 libssl 二进制文件,二进制版本可能会导致段错误。
    • 这对我来说是个好答案,但我必须修复“找不到 -lssl 的库”,这是我修复它的方法:$ export LDFLAGS="-L/usr/local/opt/openssl/lib" export CPPFLAGS="-I/usr/local/opt/openssl/include" 然后@ 987654327@
    【解决方案7】:

    $ find / -name pg_config 2>/dev/null

    /Applications/Postgres.app/Contents/Versions/9.3/bin/pg_config

    $ export PATH=$PATH:/Applications/Postgres.app/Contents/Versions/9.3/bin/

    $ pip install psycopg2

    【讨论】:

    • find / -name pg_config 2>/dev/null 对我有用,谢谢
    • 谢谢它帮助我避免在其他页面上花费更多时间。
    • 这个答案被低估了......这是所列问题的实际解决方案......感谢清晰简洁的解决方案......
    【解决方案8】:

    在我的 MAC 上,这成功了:

    pip install psycopg2-binary
    

    【讨论】:

    • pyscopg2-binary 仅用于开发,不应在生产构建中使用
    【解决方案9】:

    我遇到了这个问题。我所做的是确保 Python 与我的 pip 安装方式保持同步。它需要“pip3”安装。

    【讨论】:

      【解决方案10】:

      要在 mac 中安装 psycopg2,请按照以下步骤操作

      1. 转到应用程序文件夹
      2. 选择 Postgre.app
      3. 右键单击并“显示包内容”
      4. 选择内容-->版本-->{版本号}-->bin
      5. 检查版本号

      export PATH=$PATH:/Applications/Postgres.app/Contents/Versions/{Version Number}/bin/
      

      例子

      export PATH=$PATH:/Applications/Postgres.app/Contents/Versions/12/bin/
      

      然后运行下面的

      pip3 install psycopg2
      

      这应该可以解决您的问题

      【讨论】:

      • +1 Postgres14,Arm M1
      【解决方案11】:

      即使我无法在 MacOx 10.15.6 上安装 psycopg2。

      我尝试了 pip install psycopg2-binary 并且成功了。

      【讨论】:

        【解决方案12】:

        我的问题是由于某种原因在 VENV pip install psycopg2 中不起作用,但我发现从 VENV 内部运行此命令

        env LDFLAGS='-L/usr/local/lib -L/usr/local/opt/openssl/lib -L/usr/local/opt/readline/lib' pip install psycopg2
        

        请允许我在 mac 上安装它。

        【讨论】:

          【解决方案13】:

          在 big sur 上遇到同样的问题,就我而言,我已经安装了 postgresql。不知何故,我重新启动机器并重试安装 psycopg2,它工作正常。

          【讨论】:

            【解决方案14】:

            安装 OpenSSL 并运行:export LIBRARY_PATH=$LIBRARY_PATH:/usr/local/opt/openssl/lib/。此命令导出其路径。

            【讨论】:

            • 我遇到了错误“ld: library not found for -lssl”,这很有效。
            • 我用自制软件安装了 openssl,即brew install openssl。然后我需要运行export LDFLAGS="-L/opt/homebrew/opt/openssl@1.1/lib",这是我从运行brew info openssl 得到的。然后pip3 install psycopg2-binary --user工作了
            【解决方案15】:

            psycopg2 的安装及其在.py 文件中的导入问题可能在于安装和导入两个方面。

            1. 如果您的psycopg2 未安装或出现安装错误,请检查您可能在安装 PostgreSQL 时遇到问题,链接到 PostgreSQL 安装或 openssl 安装文件夹中的 pg_config 文件或联系。
            2. 如果psycopg2 正在安装,但您无法将其导入.py 文件,则问题出在libpq 及其链接上。整个步骤如下所示。您可以逐步检查它以了解哪个是您的错误来源,然后您可以从那里进行故障排除。

              以下是在 Mac OS Big Sur 上安装 psycopg2 时对我和我的团队成员有用的步骤。在开始之前,请确保您已经安装了 Xcode 命令行工具。如果没有,请从 Apple Developer 站点安装它。以下步骤假设您已安装自制软件。如果您还没有安装自制软件,请安装它。最后但并非最不重要的一点是,它还假设您已经在系统中安装了 PostgreSQL,如果没有,则安装它。不同的人有不同的喜好,但official PostgreSQL site via Enterprise DB installer上的默认安装方法是大多数人的最佳方法。
            • 通过:
              export PATH="$PATH:/Library/PostgreSQL/12/bin:$PATH" 在您的 .zshrc 文件中提供与 pg_config 文件的链接。这样,您就可以与 /Library/PostgreSQL/12/bin 文件夹中的 pg_config 文件建立链接。因此,如果您的 PostgreSQL 安装是通过其他方式安装的,例如 Postgres.app 或通过 Homebrew 安装的 Postgres,那么您需要在您的 .zshrc 文件中包含该 PostgreSQL 安装的 bin 文件夹中指向 pg_config 文件的链接为 @ 987654341@ 依赖于此。

            • 使用命令brew install openssl 通过 Homebrew 安装 OpenSSL。原因是 libpqpsycopg2 的基础库,使用 openssl - psycopg2 不直接使用它。安装后将以下命令放入您的 .zshrc 文件中:

              • export PATH="/usr/local/opt/openssl@1.1/bin:$PATH"
              • export LDFLAGS="-L/usr/local/opt/openssl@1.1/lib"
              • export CPPFLAGS="-I/usr/local/opt/openssl@1.1/include"
                通过这样做,您正在目录中创建必要的链接。这些命令是在您安装 openssl 时由 brew 建议的,并且已直接从那里获取。
            • 现在是最重要的一步,使用命令brew install libpq 安装libpq。这会安装 libpq 库。 As per the documentation

            libpq 是 C 应用程序程序员到 PostgreSQL 的接口。 libpq 是一组库函数,允许客户端程序将查询传递给 PostgreSQL 后端服务器并接收这些查询的结果。

            • 使用 brew link libpq 链接 libpq,如果这不起作用,请使用命令:brew link libpq --force
            • 还将以下
              export PATH="/usr/local/opt/libpq/bin:$PATH" 放入您的 .zshrc 文件中。这将为libpq library 创建所有必要的链接。
            • 现在重新启动终端或使用以下命令source ~/.zshrc

            • 现在使用命令pip install psycopg2。它会起作用的。 即使您在 conda 环境中工作,这也有效。

              注意pip install psycopg2-binary应该避免,因为as per the developers of the psycopg2 library

            不鼓励在生产环境中使用 -binary 包,因为过去它们在多线程环境中被证明是不可靠的。这可能已在较新的版本中得到修复,但我从未设法重现该故障。

            【讨论】:

              【解决方案16】:

              如果您已经通过官方安装程序安装了 PostgreSQL,但在通过 venv 创建的虚拟环境中通过 pip 安装 psycopg2 时仍然出现此错误,请按照以下步骤操作:

              • 打开终端(这是在虚拟环境之外),用命令找到pg_config的位置:sudo find / -name pg_config
              • 从输出列表中找到位置后,从虚拟环境内部添加到 PATH:export PATH={location}:$PATH(确保将“{location}”替换为您发现的文件夹)
              • 然后继续在虚拟环境中安装 psycopg2:pip install psycopg2

              【讨论】:

                【解决方案17】:
                pip install psycopg binary
                

                当我在终端中安装时,这对我有用。我花了大约 45 分钟才弄清楚不要像我看到的所有其他文档一样使用任何 - 或 []。

                【讨论】:

                • 其实……那没用。我不得不去 postgresapp.com,下载 postgres。从那里,从我的 python 列表中卸载所有 psycopg。然后,运行 postgres。在终端中运行命令 -> psql -U postgres sudo mkdir -p /ect/paths.d && echo /Applications/Postgres.app/Contents/Versions/latest/bin | sudo tee /ect/paths.d/postgresapp pip install psycopg2-binary
                【解决方案18】:

                对于那些安装了PostgressApp但仍然遇到同样错误的人: 您需要按照设置文档中的说明进行设置的第三步:https://postgresapp.com/

                运行这两个命令来设置你的 PostgressApp 的路径

                sudo mkdir -p /etc/paths.d &&
                echo /Applications/Postgres.app/Contents/Versions/latest/bin | sudo tee /etc/paths.d/postgresapp
                

                请记住重新启动所有终端窗口以进行更改。 之后照常运行

                pip install psycopg2
                

                这次应该可以正常工作了。

                【讨论】:

                  【解决方案19】:

                  自从我偶然发现这个线程在 macOS 11.2 上安装 psycopg2 时遇到问题,这些解决方案不再适合我,因为 Homebrew 的路径已经改变。 对我来说,这反而奏效了:

                  $ env LDFLAGS="-I/opt/homebrew/Cellar/openssl@1.1/1.1.1m/include -L/opt/homebrew/Cellar/openssl@1.1/1.1.1m/lib" pip install psycopg2

                  我假设将来这些路径可能会再次改变;)

                  【讨论】:

                    【解决方案20】:

                    如果您尝试在已激活的 conda 环境中安装 psycopg2 并遇到此错误,请运行 conda install psycopg2 而不是 pip install psycopg2

                    在 Monterey 12.1 上为我工作

                    【讨论】:

                      猜你喜欢
                      • 2020-02-27
                      • 1970-01-01
                      • 2020-11-02
                      • 1970-01-01
                      • 2015-01-01
                      • 1970-01-01
                      • 2020-03-31
                      • 1970-01-01
                      • 1970-01-01
                      相关资源
                      最近更新 更多