【问题标题】:Mac + virtualenv + pip + postgresql = Error: pg_config executable not foundMac + virtualenv + pip + postgresql = 错误:找不到 pg_config 可执行文件
【发布时间】:2013-12-08 20:52:52
【问题描述】:

我试图为教程安装 postgres,但 pip 给了我错误:

pip install psycopg

我得到的错误片段:

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'.

pg_config 在我的 virtualenv 中在哪里?如何配置它?我使用 virtualenv 是因为我不想在系统范围内安装 postgres。

【问题讨论】:

标签: python macos postgresql psycopg2


【解决方案1】:

在 Mac 上,如果您使用 Postgres.app,则 pg_config 文件位于您的 /Applications/Postgres.app/Contents/Versions/<current_version>/bin 目录中。这需要添加到您的系统路径以修复此错误,如下所示:

export PATH=$PATH:/Applications/Postgres.app/Contents/Versions/<current_version>/bin

例如,如果当前 Postgres.app 版本是 9.5,则此导出行将是:

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

对于更新版本的 Postgres.app (> 9.5?),您可以简单地添加“最新”来代替版本号,如下所示:

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

【讨论】:

  • 注意版本会及时变化;现在是9.4
  • 请注意,如果使用标准终端的 bash,要将其始终应用于当前 shell 需要将此行添加到 .bash_profile。如果使用zsh 将此行附加到.zshrc 文件。所有这些你都可以在你的主目录中找到。 (只是ls -la
  • 这比使用 brew 简单一百万倍。
  • 现在是 9.5 版!考虑编辑答案以说出当前版本?
  • 您可以将&lt;current_version&gt; 替换为latest,它指向最新安装的Postgres 版本。我的文件夹看起来像:ls /Applications/Postgres.app/Contents/Versions/ 它给了9.5/ latest/
【解决方案2】:

在Mac上,解决方法是安装postgresql

brew install postgresql

在CentOS上,解决办法是安装postgresql-devel

sudo yum install postgresql-devel

pg_configpostgresql-devel 包中

【讨论】:

  • 问题以“virtualenv”设置开头。我不相信 brew 在这种情况下是合适的。似乎它应该是一个纯粹的 pip 解决方案。
  • psycopg 是与 C 库的绑定,因此您必须安装 C 库。无法(AFAIK)将本机 C 库安装到 virtualenvs 中。
  • 安装 postgresql C 库后,您可以重新运行失败的 pip install 命令(上述答案并未明确说明)。
【解决方案3】:

我完全同意john hight 的观点,即假设 OP 完全指定了使用 virtualenv 的需要,大多数发布的答案都是完全偏离主题的。

对我来说,答案是在激活 virtualenv 时在提示符下运行以下命令:

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

(请注意,第 9.4 部分代表版本,可能会有所不同)

或者如果您想使用最新安装的 Postgres 版本:

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

然后:

pip install psycopg2

假设你已经安装了 postgres 成功。如果没有,请记住最好和推荐的解决方案是使用:Postgres.app

【讨论】:

  • 这是这个问题的最佳答案。
  • export PATH="/Applications/Postgres.app/Contents/Versions/latest/bin:$PATH" 如果你想使用最新安装的 Postgres 版本
【解决方案4】:

不要忘记您在虚拟环境中的 $PATH 变量!= 您的全局 $PATH 变量。你可以在你的 virtualenv 和一个新的 shell 中使用 'echo $PATH' 来确认这一点。因此,除非您想将 PostgreSQL 作为虚拟环境中的唯一实例安装(不值得做的事情,imo),否则您需要修改 virtualenv 中的 $PATH 变量以包含全局安装的路径(这将解决您丢失的 pg_config 错误)。

步骤如下:

1.) 在新的 shell 中,输入“which pg_config”。这将返回路径。复制它。就我而言,路径如下所示:/Applications/Postgres.app/Contents/Versions/9.3/bin

2.) 回到你的 virtualenv shell,输入'export PATH=/your-path-to-pg_config:$PATH'

3.) 然后,仍然在 virtualenv 中,'pip install psycopg2'

如果一切按计划进行,这将在虚拟环境中安装 psycopg2,但安装将参考您的 Global PostgreSQL 安装。就我而言,这个全局安装是通过 Postgres.App 安装的,因此是路径。我更喜欢这种使用 psycopg2 的方法,因为这意味着我可以在任何 virtualenv 中轻松使用数据库,而不仅仅是在定义的虚拟环境中。

希望这对来到这里的人有所帮助。对于 Google 果汁,这是您遇到此问题时返回的显式(和模糊)错误语言:
命令 python setup.py egg_info 失败,错误代码 1

【讨论】:

  • 不过,我认为这个问题暗示了一个“内部的唯一实例”virtualenv。我仍在寻找在 virtualenv 中安装 pg 的解决方案。
  • 你是真正的冠军,拯救了我的一天。
【解决方案5】:

以下是我在 Mac (OSX 10.9) 上解决此问题的方法:

brew update
brew install --force ossp-uuid
brew install postgresql
pip install psycopg

我在尝试pip install psycopgLLVM 5.1 issue)时遇到了 CLANG 错误,因此我不得不使用以下命令安装 psycopg:

ARCHFLAGS=-Wno-error=unused-command-line-argument-hard-error-in-future pip install psycopg

它类似于Mingyu's 的解决方案,但有足够的差异,我认为值得分享。

【讨论】:

  • +1 为我工作。不敢相信我必须为 C 编译器指定自定义标志才能在 MacOS 上设置 postgres+python 开发环境...
  • 问题以“virtualenv”设置开头。我不相信 brew 在这种情况下是合适的。似乎它应该是一个纯粹的 pip 解决方案。
【解决方案6】:

你必须配置路径postgresql:

export PATH=$PATH:/Library/PostgreSQL/11/bin

之后,您必须安装要求:

pip3 install -r requirements

【讨论】:

    【解决方案7】:

    对于OS X El Capitan (10.11.6) + brew + virtualenv + PostgreSQL 9.5

    安装后PostgreSQL 9.5:

    brew install postgresql@9.5
    

    然后,打开你的终端并执行:

    export PATH=$PATH:/usr/local/opt/postgresql\@9.5/bin/
    pip install psycopg2
    

    【讨论】:

      【解决方案8】:

      当构建工具找不到 Postgresql 库时会导致此错误。

      通常需要指导 psycopg2 如何找到 pg_config 二进制文件,您可以:

      1. 在你的 shell 路径 (/usr/local/pgsql/bin/) 中添加 pg_config 的路径

      2. 或编辑 psycopg2 源文件夹中的 setup.cfg 文件并提供 以 pg_config=

      3. 开头的行上 pg_config 的完整路径

      pg_config=/usr/local/pgsql/bin/pg_config

      • 以上是一个示例,您可以通过locate pg_config 查找它所在的位置,或者只需输入which pg_config,它就会告诉您路径。

      错误通常来自系统上未安装 postgresql。如果是这样,请下载并构建 postgres,或为 OS X 下载预构建的 psycopg2 二进制文件。

      【讨论】:

      • 当然......但是你如何在 virtualenv 中做到这一点,而不是依赖于系统范围的 pg 安装?
      【解决方案9】:

      virtualenv 用于 python 包。我认为您不能在 virtualenv 中包含 postgres。您看到的错误消息可能是因为您尚未安装 postgres。 psycopg2 安装脚本正在寻找 postgres 文件(在本例中为 pg_config),但没有找到它们,因为它没有安装。无法使用 pip 或 virtualenv 安装 postgres。

      【讨论】:

      • 可以在 virtualenv 中安装 postgresql,而且这个错误通常是一个路径问题,无论是否安装了 postgresql。
      • @HolyMackerel,感谢您提供最相关的答案。关于为什么不能在 virtualenv 中安装 psycopg2/pg 的任何详细信息?
      • postgres 与 python 无关。他们分开运行,但互相交谈。
      【解决方案10】:

      在 Windows 上,我从 http://www.enterprisedb.com/products-services-training/pgdownload#windows 手动安装了 postgres。 之后,相同的命令起作用。

      【讨论】:

        【解决方案11】:

        除了@bkev 和@andi 提供的答案,根据 Postgres.app 上的documentation,您应该在 Mac 上的 bash_profile 中添加以下内容:

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

        请注意,没有硬编码的版本号。我想将此作为评论添加到上述答案中,但我没有足够的代表。

        【讨论】:

          【解决方案12】:

          如果您使用的是 postgresql 9.4,该文件位于

          /usr/pgsql-9.4/bin/pg_config
          

          包的名字是

          postgresql94-9.4.9-1PGDG.rhel6.x86_64
          

          要将 pg_config 添加到您的 PATH,请执行以下操作

          PATH=$PATH:/usr/pgsql-9.4/bin/
          

          【讨论】:

            【解决方案13】:

            如果您不必专门使用psycopg 驱动程序,请切换到pg8000 驱动程序。它是纯 Python 并且不那么挑剔。

            【讨论】:

              【解决方案14】:

              Ubuntu 上,我只需要 postgres 开发包:

              sudo apt-get install postgresql-server-dev-all
              

              【讨论】:

                【解决方案15】:

                我的位于 /Library/PostgreSQL/9.4/bin

                export PATH=$PATH:/Library/PostgreSQL/9.4/bin
                

                【讨论】:

                  猜你喜欢
                  • 2012-07-22
                  • 2020-05-20
                  相关资源
                  最近更新 更多