安装多个需要不同 LDFLAGS/CPPFLAGS 的 python 包(macOS Big Sur Apple Silicone)

Posted

技术标签:

【中文标题】安装多个需要不同 LDFLAGS/CPPFLAGS 的 python 包(macOS Big Sur Apple Silicone)【英文标题】:Installing multiple python packages that requires different LDFLAGS/CPPFLAGS (macOS Big Sur Apple Silicone) 【发布时间】:2021-12-04 22:05:48 【问题描述】:

从 requirements.txt 文件安装 python 需求时,有几个包需要 LDFLAGS/CPPFLAGS 中的不同值。 首先,我在安装 mysql-client 时得到了这个: ld: library not found for -lzstd 我通过运行 pip install 解决了这个问题:

CPPFLAGS="-I/opt/homebrew/include" LDFLAGS="-L/opt/homebrew/lib" pip install mysqlclient

然后,我在安装密码学时遇到了这个问题:

build/temp.macosx-10.14-arm64-3.8/_openssl.c:575:10: fatal error: 'openssl/opensslv.h' file not found
#include <openssl/opensslv.h>

这样安装解决了:

CPPFLAGS="-I/opt/homebrew/opt/openssl@1.1/include" LDFLAGS="-L/opt/homebrew/opt/openssl@1.1/lib" pip install cryptography

我的问题是 - 这里发生了什么?我想在我的 .zshrc 中保留 LDFLAGS/CPPFLAGS 值,但似乎对于每个包我都需要不同的值? 在我的旧 Mac 上工作时,我记得这些值是

export LDFLAGS="-L/opt/homebrew/opt/mysql-client/lib"
export CPPFLAGS="-I/opt/homebrew/opt/mysql-client/include"

在 brew install mysql-client 之后 brew 建议您使用哪些值。

【问题讨论】:

【参考方案1】:

只要它们不相互冲突,您可以在其中放置多个目录,例如

LDFLAGS='-L/opt/foo/lib -L/usr/local/bar/lib'

同样适用于 CPPFLAGS。

但是,我个人会避免将 LDFLAGS 和 CPPFLAGS 放在 .zshrc 中 - 正如您所发现的,所需的值通常取决于您正在编译的内容,并且可能会在全局范围内设置它们(然后不可避免地忘记它们)在未来的某个时候造成混乱。

【讨论】:

以上是关于安装多个需要不同 LDFLAGS/CPPFLAGS 的 python 包(macOS Big Sur Apple Silicone)的主要内容,如果未能解决你的问题,请参考以下文章

ubuntu中同时安装多个版本的opencv

如何在同一台机器上安装多个MySQL的实例(转)

同时安装多个node版本

zabbix-agent在windows服务器上安装多个得方法,--multiple-agents (多个agent) 的安装方式(20200710)

Mac - 如何在Mac上安装多个版本openjdk并有效管理

如何在同一台机器上安装多个MySQL的实例 转