Mac-ARM64架构下执行uv sync命令报错:无法安装psycopg-binary==3.2.2
我之前在M1 Mac上折腾FastAPI全栈模板项目时,刚好碰到过一模一样的问题!这是因为psycopg-binary==3.2.2这个版本没有为Mac ARM64(也就是咱们常用的M系列芯片)提供预编译的wheel包,所以uv找不到适配的安装文件才抛出了这个错误。先给你再明确下你遇到的错误提示:
Distribution
psycopg-binary==3.2.2 @ registry+https://pypi.org/simplecan't be installed because it doesn't have a source distribution or wheel for the current platform.
你提供的错误截图也清晰显示了这个报错内容。
下面是几个亲测有效的解决办法,你可以按顺序尝试:
升级psycopg-binary到支持ARM64的版本
这是最省心的方案,psycopg-binary从3.3.0版本开始正式支持Mac ARM64架构。你只需要修改项目里的依赖配置文件(比如pyproject.toml或者requirements.txt),把psycopg-binary==3.2.2改成psycopg-binary>=3.3.0(或者直接指定一个稳定的新版本,比如3.3.3),然后重新执行uv sync就能正常安装了。替换为纯Python版psycopg(需先装系统依赖)
如果你不想升级版本,可以把psycopg-binary换成纯源码编译版的psycopg。不过这需要先在Mac上安装PostgreSQL的系统依赖,打开终端执行这条命令:brew install postgresql安装完成后,修改项目的依赖文件,把
psycopg-binary==3.2.2替换成psycopg==3.2.2,再运行uv sync,uv就会自动从源码编译安装适配你架构的版本。用Rosetta 2模拟x86_64环境运行终端
如果你必须要使用3.2.2版本的psycopg-binary,可以试试通过Rosetta 2来模拟x86_64架构的环境:- 找到「终端」应用,右键点击选择「显示简介」
- 勾选「使用Rosetta打开」选项,然后重启终端
- 在这个Rosetta模式的终端里进入你的项目目录,重新执行
uv sync
这种方式会让终端以x86_64架构运行,uv就能找到适配该架构的psycopg-binary 3.2.2 wheel包了。
备注:内容来源于stack exchange,提问作者JustAGirl

