安装多个需要不同 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)的主要内容,如果未能解决你的问题,请参考以下文章
zabbix-agent在windows服务器上安装多个得方法,--multiple-agents (多个agent) 的安装方式(20200710)