Mac OS 上的 Pip 安装出错:命令“/usr/bin/clang”失败,退出代码为 1

Fau*_*aro 13 macos pip python-3.x google-cloud-platform google-cloud-pubsub

我想在 Mac OS 上通过 pip 安装来安装 google-cloud-pubsub,但出现错误:distutils.errors.CompileError: command '/usr/bin/clang' failed with exit code 1. 我运行的命令:pip install google-cloud-pubsub==2.1.0

这里是完整的错误信息

有什么建议吗?谢谢!

更多信息:

$ python -V
Python 3.9.0

$ pip -V
pip 20.2.4 from /.../lib/python3.9/site-packages/pip (python 3.9)

$ sw_vers
ProductName:    macOS
ProductVersion: 11.0.1
BuildVersion:   20B29
Run Code Online (Sandbox Code Playgroud)

我见过其他类似的案例,但它们并没有解决我的问题。我试过:

ARK*_*han 23

我正在使用pyenv并面临类似的问题。然后我做了以下操作并且成功了。

一、升级pip

pip3 install --upgrade pip
Run Code Online (Sandbox Code Playgroud)

然后,更新设置工具:

python3 -m pip install --upgrade setuptools
Run Code Online (Sandbox Code Playgroud)

  • 它对我不起作用... mac os monterey intel ... (5认同)
  • 感谢@Arkhan,它在 Mac M1 处理器上完美运行! (2认同)

Gab*_*het 6

尝试在之前添加这些 env var

GRPC_PYTHON_BUILD_SYSTEM_OPENSSL=true GRPC_PYTHON_BUILD_SYSTEM_ZLIB=true pip install google-cloud-pubsub==2.1.0
Run Code Online (Sandbox Code Playgroud)

如果它不起作用,您可以尝试使用 virtualenv:

pip install virtualenv
virtualenv my-test-env
source my-test-env/bin/activate
my-test-env/bin/pip install google-cloud-pubsub==2.1.0
Run Code Online (Sandbox Code Playgroud)

因为是在github上写的:

使用 pip 在 vi​​rtualenv 中安装这个库。virtualenv 是一个创建隔离 Python 环境的工具。它解决的基本问题是依赖项和版本之一,以及间接权限。

使用 virtualenv,可以在不需要系统安装权限的情况下安装这个库,并且不会与已安装的系统依赖项发生冲突。

  • 非常感谢你,但是,运气不好!我犯了同样的错误。我尝试配置 GRPC_PYTHON_BUILD_SYSTEM_RE2 但它不起作用。我只使用 venv。还有进一步的建议吗? (2认同)

小智 5

我最终只使用 Python 3.8.13,通过 pyenv 和 pyenv-virtualenv 进行管理。

如果你没有 pyenv:

brew install pyenv pyenv-virtualenv
Run Code Online (Sandbox Code Playgroud)

添加

export PATH="$HOME/.pyenv/bin:$PATH"
export PATH="$HOME/.pyenv/shims:$PATH"
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"
Run Code Online (Sandbox Code Playgroud)

到你的 ~/.zshrc (如果它不存在),并且source ~/.zshrc

pyenv install 3.8.13
pyenv global 3.8.13
pyenv virtualenv 3.8.13 venv
pyenv activate venv
pip install grcpio
Run Code Online (Sandbox Code Playgroud)