You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Mac M1 Monterey 12.3.1环境导入psycopg2报错求助

问题场景
  • 运行环境:搭载Apple M1芯片的Mac设备,系统版本为Monterey 12.3.1
  • 触发流程:执行pip install -r requirements.txt命令安装psycopg2-binary==2.9.1后,本地启动Django项目执行python manage.py runserver命令时触发报错
  • 完整报错信息:
main()
  File "/Users/gabrielnaughton/development/tamato/manage.py", line 25, in main
    execute_from_command_line(sys.argv)
  File "/Users/gabrielnaughton/development/tamato/venv/lib/python3.9/site-packages/django/core/management/__init__.py", line 401, in execute_from_command_line
    utility.execute()
  File "/Users/gabrielnaughton/development/tamato/venv/lib/python3.9/site-packages/django/core/management/__init__.py", line 395, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "/Users/gabrielnaughton/development/tamato/venv/lib/python3.9/site-packages/django/core/management/base.py", line 343, in run_from_argv
    connections.close_all()
  File "/Users/gabrielnaughton/development/tamato/venv/lib/python3.9/site-packages/django/db/utils.py", line 232, in close_all
    for alias in self:
  File "/Users/gabrielnaughton/development/tamato/venv/lib/python3.9/site-packages/django/db/utils.py", line 226, in __iter__
    return iter(self.databases)
  File "/Users/gabrielnaughton/development/tamato/venv/lib/python3.9/site-packages/django/utils/functional.py", line 48, in __get__
    res = instance.__dict__[self.name] = self.func(instance)
  File "/Users/gabrielnaughton/development/tamato/venv/lib/python3.9/site-packages/django/db/utils.py", line 153, in databases
    self._databases = settings.DATABASES
  File "/Users/gabrielnaughton/development/tamato/venv/lib/python3.9/site-packages/django/conf/__init__.py", line 82, in __getattr__
    self._setup(name)
  File "/Users/gabrielnaughton/development/tamato/venv/lib/python3.9/site-packages/django/conf/__init__.py", line 69, in _setup
    self._wrapped = Settings(settings_module)
  File "/Users/gabrielnaughton/development/tamato/venv/lib/python3.9/site-packages/django/conf/__init__.py", line 170, in __init__
    mod = importlib.import_module(self.SETTINGS_MODULE)
  File "/opt/homebrew/Cellar/python@3.9/3.9.12/Frameworks/Python.framework/Versions/3.9/lib/python3.9/importlib/__init__.py", line 127, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 1030, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1007, in _find_and_load
  File "<frozen importlib._bootstrap>", line 972, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 228, in _call_with_frames_removed
  File "<frozen importlib._bootstrap>", line 1030, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1007, in _find_and_load
  File "<frozen importlib._bootstrap>", line 986, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 680, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 850, in exec_module
  File "<frozen importlib._bootstrap>", line 228, in _call_with_frames_removed
  File "/Users/gabrielnaughton/development/tamato/settings/__init__.py", line 1, in <module>
    from settings.common import *
  File "/Users/gabrielnaughton/development/tamato/settings/common.py", line 16, in <module>
    from common.util import is_truthy
  File "/Users/gabrielnaughton/development/tamato/common/util.py", line 38, in <module>
    from psycopg2.extras import DateRange
  File "/Users/gabrielnaughton/development/tamato/venv/lib/python3.9/site-packages/psycopg2/__init__.py", line 51, in <module>
    from psycopg2._psycopg import (                     # noqa
ImportError: dlopen(/Users/gabrielnaughton/development/tamato/venv/lib/python3.9/site-packages/psycopg2/_psycopg.cpython-39-darwin.so, 0x0002): tried: '/Users/gabrielnaughton/development/tamato/venv/lib/python3.9/site-packages/psycopg2/_psycopg.cpython-39-darwin.so' (mach-o file, but is an incompatible architecture (have 'x86_64', need 'arm64e'))
问题核心原因

报错本质是动态链接库架构不兼容:当前安装的psycopg2依赖二进制文件为x86_64架构,M1设备原生运行需要arm64e架构,常规高赞修复方案未生效时,可尝试以下落地解决方法。

可行修复方案
  • 方案1:排查并修正终端/虚拟环境的运行架构
    大部分修复无效的核心原因是当前终端或虚拟环境实际跑在Rosetta 2转译的x86模式下:
    1. 终端执行arch命令,若输出i386,需右键点击终端应用选择「显示简介」,取消勾选「使用Rosetta打开」,重启终端
    2. 激活虚拟环境后执行python -c "import platform; print(platform.machine())",若输出x86_64,说明虚拟环境是x86架构下创建的,直接删除旧虚拟环境文件夹,重新创建arm架构虚拟环境后再安装依赖
  • 方案2:源码编译安装适配arm64架构的对应版本
    若必须使用psycopg2-binary==2.9.1版本,可跳过预编译x86二进制包,本地编译适配:
    1. 先卸载所有旧版本残留:pip uninstall -y psycopg2 psycopg2-binary
    2. 安装编译所需的系统依赖:brew install postgresql openssl
    3. 强制使用本地源码编译安装,不抓取预编译包:pip install psycopg2-binary==2.9.1 --no-binary psycopg2-binary
  • 方案3:升级到官方原生支持M1的稳定版本
    2.9.1版本的psycopg2-binary未提供M1芯片的arm64预编译包,属于已知兼容问题,若项目依赖版本允许,直接升级到2.9.3及以上稳定版本即可,官方已提供原生arm64架构预编译包,安装后无需额外配置:
    pip install "psycopg2-binary>=2.9.3"

内容的提问来源于stack exchange,提问作者Gabe Naughton

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.30 00:48:20