无法在 MacOS 上通过 pip install 安装 psycopg2 包
Can't install psycopg2 package through pip install on MacOS
我正在为我的一个讲座做一个项目,我需要下载包 psycopg2 以便使用正在使用的 postgresql 数据库。不幸的是,当我尝试 pip install psycopg2 时,弹出以下错误:
ld: library not found for -lssl
clang: error: linker command failed with exit code 1 (use -v to see invocation)
error: command '/usr/bin/clang' failed with exit status 1
ld: library not found for -lssl
clang: error: linker command failed with exit code 1 (use -v to see invocation)
error: command '/usr/bin/clang' failed with exit status 1
有谁知道为什么会这样?提前致谢!
好像没有安装openssl包。尝试安装它并再次 pip install
。我不是 macos 用户,但我相信 brew
简化了该平台上的包管理。
您可能还需要安装 Python 开发包和 postgresql 开发包。
我通过安装命令行工具解决了这个问题
xcode-select --install
然后通过 Homebrew 安装 openssl 并手动将我的 homebrew 安装的 openssl 链接到 pip:
env LDFLAGS="-I/usr/local/opt/openssl/include -L/usr/local/opt/openssl/lib" pip install psycopg2
在 macOS Sierra 10.12.1
Install/update Xcode 开发者工具
xcode-select --install
查询postgres路径
find / -name pg_config 2>/dev/null
安装 psycopg2,使用您在 步骤 2 中获得的路径。我的是'/usr/local/Cellar/postgresql/9.5.0/bin/pg_config'
PATH=$PATH:/usr/local/Cellar/postgresql/9.5.0/bin/ pip install psycopg2
这对我有用(在终端上):
find / -name pg_config 2>/dev/null
然后添加路径:
export PATH=$PATH:/Applications/Postgres.app/Contents/Versions/9.5/bin/
os 版本:MacOs Sierra
希望对您有所帮助。
尝试安装:
pip install psycopg2-binary
旧的,但对于使用 pipenv 的人来说,我通过查看我的依赖关系图 pipenv graph --reverse
并注意到它需要 psycopg2-binary==2.8.2
解决了这个问题。 运行 pipenv install psycopg2-binary
解决了问题。
brew install postgresql
如果 postgresql 存在那么 运行:
brew upgrade postgresql
sudo 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==2.8.4
如果您只需要使用命令 pip install psycopg2
在 macOSX 中导出路径:
export LDFLAGS="-I/usr/local/opt/openssl/include -L/usr/local/opt/openssl/lib"
运行 使用 pipenv install psycopg2 遇到类似问题:
ld: library not found for -lssl', ' clang: error: linker command
failed with exit code 1 (use -v to see invocation)', " error:
command 'clang' failed with exit status 1", '
----------------------------------------',
我尝试了上面的所有建议,并且 none 有效。几个月前我在另一个 virtualenv 中遇到过这个问题,记得读过一些关于这是 psycopg2 version issue 的文章。所以我尝试安装 2.7.1 和 2.8.3,但都失败了。不知何故版本 2.7.7 工作:
pipenv install psycopg2==2.7.7
希望我有时间进一步研究这个问题,以了解到底发生了什么。但现在我没有,这很有效。
env LDFLAGS="-I/usr/local/opt/openssl/include -L/usr/local/opt/openssl/lib" \
brew upgrade openssl
然后我可以安装psycopg2
我修复了它:
brew reinstall openssl
export LIBRARY_PATH=$LIBRARY_PATH:/usr/local/opt/openssl/lib/
如果您不想与 brew
纠缠不清,这里是 "MacOS-only solution":
sudo installer -pkg /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg -target /
在此之后,pip
将很乐意从源安装 psycopg2
。适用于 "Mojave" (macOS 10.14)。
根据current/todey条件-
唯一的解决方案是 -
卸载 python 3.8 或 3.9 等
并安装 ptyhon 3.7.4
试试这个 -->pip install psycopg2-binary
唯一对我有用的是:
pip install psycopg2==2.7.7
好吧,很多不同的选择都不适合我,但最后!
首先,试试这个:
brew reinstall openssl
在重新安装过程结束时,您基本上会在 Caveats 部分中获得以下几行,自从我使用 macOS Big Sur 以来,我已将其放入 zshrc 配置文件中(版本 11.1) 和 zsh 终端。
打开 zshrc 或其他特定于您的系统的配置文件:
nano ~/.zshrc
在末尾粘贴以下行(或根据您的 Caveats 相应地更改这些命令),请记住 Homebrew 提供的 OpenSSL 可能与系统的(我收到一条警告,macOS 提供 LibreSSL)但它运行良好:
export PATH="/opt/homebrew/opt/openssl@1.1/bin:$PATH"
export LDFLAGS="-L/opt/homebrew/opt/openssl@1.1/lib"
export CPPFLAGS="-I/opt/homebrew/opt/openssl@1.1/include"
保存文件并按 ^X 并用 Yes.
确认退出
希望您现在可以安装 psycopg2:
pip3 install psycopg2-binary
我仍然不确定问题的根本原因是什么,它是在我尝试为我的项目重新安装 pipenv 时突然出现的(可能是最近的一些系统更新)。
尝试安装:
pip install psycopg2-binary
有效
我 运行 在 macOS Big Sur (11.5.1) 和 Python 3.9.6.
上遇到同样的错误
事实证明,我使用的 psycopg2(以及 pandas)版本太旧了。升级上述软件包后错误消失,pip install
开始正常工作。
参考:https://github.com/Azure/azure-cli/issues/12854#issuecomment-619213863
一般来说,如果其他人在这里建议的解决方案没有帮助,请尝试升级麻烦的 python 包。
对于Mac OS 11.06 BigSur M1 ship,在pyenv下安装
brew reinstall libpq
brew reinstall openssl
如果还没有的话,也可以安装
brew info libpq
brew info openssl
从逻辑上合并 2 个导出的输出,来自
For compilers to find openssl@3 you may need to set:
export LDFLAGS="-L/opt/homebrew/opt/openssl@3/lib"
export CPPFLAGS="-I/opt/homebrew/opt/openssl@3/include"
...
export LDFLAGS="-L/opt/homebrew/opt/libpq/lib"
export CPPFLAGS="-I/opt/homebrew/opt/libpq/include"
进入
export LDFLAGS="-L/opt/homebrew/opt/libpq/lib -L/opt/homebrew/opt/openssl@3/lib"
export CPPFLAGS="-I/opt/homebrew/opt/libpq/include -I/opt/homebrew/opt/openssl@3/include"
然后你可以重新安装psycopg2,强制重新编译,否则你会this problem at runtime
pip uninstall psycopg2
pip install psycopg2 --no-cache-dir
我正在为我的一个讲座做一个项目,我需要下载包 psycopg2 以便使用正在使用的 postgresql 数据库。不幸的是,当我尝试 pip install psycopg2 时,弹出以下错误:
ld: library not found for -lssl
clang: error: linker command failed with exit code 1 (use -v to see invocation)
error: command '/usr/bin/clang' failed with exit status 1
ld: library not found for -lssl
clang: error: linker command failed with exit code 1 (use -v to see invocation)
error: command '/usr/bin/clang' failed with exit status 1
有谁知道为什么会这样?提前致谢!
好像没有安装openssl包。尝试安装它并再次 pip install
。我不是 macos 用户,但我相信 brew
简化了该平台上的包管理。
您可能还需要安装 Python 开发包和 postgresql 开发包。
我通过安装命令行工具解决了这个问题
xcode-select --install
然后通过 Homebrew 安装 openssl 并手动将我的 homebrew 安装的 openssl 链接到 pip:
env LDFLAGS="-I/usr/local/opt/openssl/include -L/usr/local/opt/openssl/lib" pip install psycopg2
在 macOS Sierra 10.12.1
Install/update Xcode 开发者工具
xcode-select --install
查询postgres路径
find / -name pg_config 2>/dev/null
安装 psycopg2,使用您在 步骤 2 中获得的路径。我的是'/usr/local/Cellar/postgresql/9.5.0/bin/pg_config'
PATH=$PATH:/usr/local/Cellar/postgresql/9.5.0/bin/ pip install psycopg2
这对我有用(在终端上):
find / -name pg_config 2>/dev/null
然后添加路径:
export PATH=$PATH:/Applications/Postgres.app/Contents/Versions/9.5/bin/
os 版本:MacOs Sierra
希望对您有所帮助。
尝试安装:
pip install psycopg2-binary
旧的,但对于使用 pipenv 的人来说,我通过查看我的依赖关系图 pipenv graph --reverse
并注意到它需要 psycopg2-binary==2.8.2
解决了这个问题。 运行 pipenv install psycopg2-binary
解决了问题。
brew install postgresql
如果 postgresql 存在那么 运行:
brew upgrade postgresql
sudo 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==2.8.4
如果您只需要使用命令 pip install psycopg2
在 macOSX 中导出路径:
export LDFLAGS="-I/usr/local/opt/openssl/include -L/usr/local/opt/openssl/lib"
运行 使用 pipenv install psycopg2 遇到类似问题:
ld: library not found for -lssl', ' clang: error: linker command failed with exit code 1 (use -v to see invocation)', " error: command 'clang' failed with exit status 1", '
----------------------------------------',
我尝试了上面的所有建议,并且 none 有效。几个月前我在另一个 virtualenv 中遇到过这个问题,记得读过一些关于这是 psycopg2 version issue 的文章。所以我尝试安装 2.7.1 和 2.8.3,但都失败了。不知何故版本 2.7.7 工作:
pipenv install psycopg2==2.7.7
希望我有时间进一步研究这个问题,以了解到底发生了什么。但现在我没有,这很有效。
env LDFLAGS="-I/usr/local/opt/openssl/include -L/usr/local/opt/openssl/lib" \
brew upgrade openssl
然后我可以安装psycopg2
我修复了它:
brew reinstall openssl
export LIBRARY_PATH=$LIBRARY_PATH:/usr/local/opt/openssl/lib/
如果您不想与 brew
纠缠不清,这里是 "MacOS-only solution":
sudo installer -pkg /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg -target /
在此之后,pip
将很乐意从源安装 psycopg2
。适用于 "Mojave" (macOS 10.14)。
根据current/todey条件- 唯一的解决方案是 - 卸载 python 3.8 或 3.9 等 并安装 ptyhon 3.7.4
试试这个 -->pip install psycopg2-binary
唯一对我有用的是:
pip install psycopg2==2.7.7
好吧,很多不同的选择都不适合我,但最后!
首先,试试这个:
brew reinstall openssl
在重新安装过程结束时,您基本上会在 Caveats 部分中获得以下几行,自从我使用 macOS Big Sur 以来,我已将其放入 zshrc 配置文件中(版本 11.1) 和 zsh 终端。
打开 zshrc 或其他特定于您的系统的配置文件:
nano ~/.zshrc
在末尾粘贴以下行(或根据您的 Caveats 相应地更改这些命令),请记住 Homebrew 提供的 OpenSSL 可能与系统的(我收到一条警告,macOS 提供 LibreSSL)但它运行良好:
export PATH="/opt/homebrew/opt/openssl@1.1/bin:$PATH"
export LDFLAGS="-L/opt/homebrew/opt/openssl@1.1/lib"
export CPPFLAGS="-I/opt/homebrew/opt/openssl@1.1/include"
保存文件并按 ^X 并用 Yes.
确认退出希望您现在可以安装 psycopg2:
pip3 install psycopg2-binary
我仍然不确定问题的根本原因是什么,它是在我尝试为我的项目重新安装 pipenv 时突然出现的(可能是最近的一些系统更新)。
尝试安装:
pip install psycopg2-binary
有效
我 运行 在 macOS Big Sur (11.5.1) 和 Python 3.9.6.
上遇到同样的错误事实证明,我使用的 psycopg2(以及 pandas)版本太旧了。升级上述软件包后错误消失,pip install
开始正常工作。
参考:https://github.com/Azure/azure-cli/issues/12854#issuecomment-619213863
一般来说,如果其他人在这里建议的解决方案没有帮助,请尝试升级麻烦的 python 包。
对于Mac OS 11.06 BigSur M1 ship,在pyenv下安装
brew reinstall libpq
brew reinstall openssl
如果还没有的话,也可以安装
brew info libpq
brew info openssl
从逻辑上合并 2 个导出的输出,来自
For compilers to find openssl@3 you may need to set:
export LDFLAGS="-L/opt/homebrew/opt/openssl@3/lib"
export CPPFLAGS="-I/opt/homebrew/opt/openssl@3/include"
... export LDFLAGS="-L/opt/homebrew/opt/libpq/lib"
export CPPFLAGS="-I/opt/homebrew/opt/libpq/include"
进入
export LDFLAGS="-L/opt/homebrew/opt/libpq/lib -L/opt/homebrew/opt/openssl@3/lib"
export CPPFLAGS="-I/opt/homebrew/opt/libpq/include -I/opt/homebrew/opt/openssl@3/include"
然后你可以重新安装psycopg2,强制重新编译,否则你会this problem at runtime
pip uninstall psycopg2
pip install psycopg2 --no-cache-dir