Mac + virtualenv + pip + postgresql =错误:找不到pg_config可执行文件

KGo*_*KGo 74 python postgresql macos psycopg2

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

pip install psycopg
Run Code Online (Sandbox Code Playgroud)

我得到一个错误:

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'.
Run Code Online (Sandbox Code Playgroud)

pg_config我的virtualenv 在哪里?如何配置?我正在使用virtualenv,因为我不想在系统范围内安装postgres.

bke*_*kev 89

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

export PATH=$PATH:/Applications/Postgres.app/Contents/Versions/<current_version>/bin
Run Code Online (Sandbox Code Playgroud)

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

export PATH=$PATH:/Applications/Postgres.app/Contents/Versions/9.5/bin
Run Code Online (Sandbox Code Playgroud)

使用更新版本的Postgres.app(> 9.5?),您只需添加"latest"代替版本号,如下所示:

export PATH=$PATH:/Applications/Postgres.app/Contents/Versions/latest/bin
Run Code Online (Sandbox Code Playgroud)

  • 你可以将`<current_version>`替换为指向最新安装的Postgres版本的`latest`.我的文件夹看起来像:`ls/Applications/Postgres.app/Contents/Versions /`它给出了9.5/latest /` (6认同)
  • 注意版本会及时更改; 现在它是`9.4` (5认同)
  • 请注意,如果使用标准终端的 bash,要始终将其应用于当前 shell,需要将此行添加到“.bash_profile”。如果使用“zsh”,请将此行附加到“.zshrc”文件中。所有这些您都可以在您的主目录中找到。(只是“ls -la”) (2认同)
  • 这比使用brew要容易一百万倍. (2认同)

Min*_*gyu 82

在Mac上,解决方案是安装postgresql:

brew install postgresql
Run Code Online (Sandbox Code Playgroud)

在CentOS上,解决方案是安装postgresql-devel:

sudo yum install postgresql-devel
Run Code Online (Sandbox Code Playgroud)

pg_configpostgresql-devel包中

  • 这个问题以"virtualenv"设置为前言.在这种情况下,我不相信brew是合适的.似乎应该是纯粹的点子解决方案. (10认同)

and*_*abs 29

我完全赞同john hight,大多数发布的答案完全是offtopic,假设OP完全指定使用virtualenv的需要.

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

export PATH="/Applications/Postgres.app/Contents/Versions/9.4/bin:$PATH"
Run Code Online (Sandbox Code Playgroud)

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

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

export PATH="/Applications/Postgres.app/Contents/Versions/latest/bin:$PATH" 
Run Code Online (Sandbox Code Playgroud)

然后:

pip install psycopg2
Run Code Online (Sandbox Code Playgroud)

假设你已经安装了postgres,那就太过分了.如果没有,那么请记住,最好和推荐的解决方案是使用:Postgres.app

  • 这是这个问题的最佳答案。 (3认同)
  • 如果您要使用最新安装的Postgres版本,请使用“ export PATH =“ / Applications / Postgres.app / Contents / Versions / latest / bin:$ PATH”`。 (2认同)

小智 17

不要忘记虚拟环境中的$ PATH变量!=全局$ PATH变量.您可以在virtualenv中使用"echo $ PATH"以及新shell中进行确认.因此,除非你想在你的虚拟环境中安装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安装.在我的例子中,这个Global安装是通过Postgres.App安装的,因此是路径.我更喜欢这种使用psycopg2的方法,因为这意味着我可以在任何virtualenv中轻松使用数据库,而不仅仅是在定义的虚拟环境中.

希望这可以帮助到达这里的任何人.对于Google juice,这是遇到此问题时返回的显式(和模糊)错误语言:
命令python setup.py egg_info失败,错误代码为1

  • 不过,我认为这个问题意味着"virtualenv内部的独特实例".我还在寻找一种能够在virtualenv中安装pg的解决方案. (2认同)

mrg*_*gnw 10

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

brew update
brew install --force ossp-uuid
brew install postgresql
pip install psycopg
Run Code Online (Sandbox Code Playgroud)

我尝试时遇到CLANG错误pip install psycopg(LLVM 5.1问题),所以我不得不用这个命令安装psycopg:

ARCHFLAGS=-Wno-error=unused-command-line-argument-hard-error-in-future pip install psycopg
Run Code Online (Sandbox Code Playgroud)

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

  • +1为我工作.无法相信我必须为C编译器指定一个自定义标志,以便在MacOS上设置postgres + python开发环境... (2认同)

val*_*lex 7

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

安装后PostgreSQL 9.5

brew install postgresql@9.5
Run Code Online (Sandbox Code Playgroud)

然后,打开终端并执行:

export PATH=$PATH:/usr/local/opt/postgresql\@9.5/bin/
pip install psycopg2
Run Code Online (Sandbox Code Playgroud)


Die*_*ezú 7

您必须配置路径 postgresql:

export PATH=$PATH:/Library/PostgreSQL/11/bin
Run Code Online (Sandbox Code Playgroud)

之后,您必须安装要求:

pip3 install -r requirements
Run Code Online (Sandbox Code Playgroud)


l'L*_*L'l 5

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

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

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

  2. 或者编辑psycopg2源文件夹中的setup.cfg文件,并在以pg_config =开头的行上提供pg_config的完整路径

pg_config =在/ usr /本地/ pgsql的/ bin中/ pg_config

  • 以上是一个例子,你可以locate pg_config找到它所在的位置,或者只是输入which pg_config,它应该告诉你路径.

错误来自于没有在系统上安装postgresql.如果是这样,请下载并构建postgres,或者为OS X下载预先构建的psycopg2二进制文件.


Hol*_*rel 3

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