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

Mac Silicon安装psychopy包时出现Cython相关错误

问题描述

我尝试使用PsychoPy包(版本2023.2.3),安装过程中会附带安装部分Psychtoolbox文件。在Mac Silicon环境下遇到两类问题:

1. Python 3.9/3.10环境导入Psychtoolbox报错

执行import psychtoolbox as ptb时出现以下错误:

ImportError                               Traceback (most recent call last)
Cell In[57], line 1
----> 1 import psychtoolbox as ptb

File ~/miniforge3/envs/goodfeeling/lib/python3.10/site-packages/psychtoolbox/__init__.py:28
     26 from .WaitSecs import WaitSecs
     27 from .GetSecs import GetSecs
---> 28 from .PsychHID import PsychHID
     29 from .IOPort import IOPort
     30 if is_64bits:

ImportError: dlopen(/Users/davidcsuka/miniforge3/envs/myenv/lib/python3.10/site-packages/psychtoolbox/PsychHID.cpython-310-darwin.so, 0x0002): symbol not found in flat namespace '_AllocateHIDObjectFromIOHIDDeviceRef'

2. Python 3.8环境安装PsychoPy失败

使用pip安装时直接失败,错误信息如下:

File "/private/var/folders/9x/x950xm6j3ws6cm5rcv8w34kh0000gn/T/pip-build-env-a0oj0w5k/overlay/lib/python3.8/site-packages/setuptools/build_meta.py", line 295, in _get_build_requires
          self.run_setup()
        File "/private/var/folders/9x/x950xm6j3ws6cm5rcv8w34kh0000gn/T/pip-build-env-a0oj0w5k/overlay/lib/python3.8/site-packages/setuptools/build_meta.py", line 311, in run_setup
          exec(code, locals())
        File "<string>", line 928, in <module>
        File "<string>", line 923, in get_cython_extfiles
        File "/private/var/folders/9x/x950xm6j3ws6cm5rcv8w34kh0000gn/T/pip-build-env-a0oj0w5k/overlay/lib/python3.8/site-packages/Cython/Build/Dependencies.py", line 1154, in cythonize
          cythonize_one(*args)
        File "/private/var/folders/9x/x950xm6j3ws6cm5rcv8w34kh0000gn/T/pip-build-env-a0oj0w5k/overlay/lib/python3.8/site-packages/Cython/Build/Dependencies.py", line 1321, in cythonize_one
          raise CompileError(None, pyx_file)
      Cython.Compiler.Errors.CompileError: tables/utilsextension.pyx

疑问:是否需要更换Cython版本?或是不同C编译器存在兼容性问题?亦或是该问题与我的操作系统相关?


解决方案

针对Python 3.9/3.10的Psychtoolbox导入错误

该错误根源是Mac Silicon(ARM架构)的兼容性问题:_AllocateHIDObjectFromIOHIDDeviceRef属于旧版IOHID框架符号,新版macOS ARM架构已移除,而pip提供的预编译Psychtoolbox包基于x86架构编译,未适配ARM。

解决方式:

  • 优先使用PsychoPy官方提供的Mac Silicon专属安装包,官方包会适配ARM架构的所有依赖,包括正确编译的Psychtoolbox版本。
  • 若必须使用pip,需手动从源码编译Psychtoolbox:
    1. 安装Xcode Command Line Tools:xcode-select --install
    2. 卸载现有Psychtoolbox:pip uninstall psychtoolbox
    3. 源码编译安装:pip install git+https://github.com/Psychtoolbox-3/Psychtoolbox-3.git#subdirectory=Psychtoolbox/Python/Psychtoolbox

针对Python 3.8的安装失败问题

此错误由Cython版本不兼容导致,Python 3.8搭配的新版Cython对旧版tables包的.pyx文件编译支持不足。

解决方式:

  • 指定兼容的Cython版本,先安装旧版Cython再安装PsychoPy:
    pip install cython==0.29.36
    pip install psychopy==2023.2.3
    
  • 确保已安装Xcode Command Line Tools,且环境变量CC指向系统默认的clang编译器,避免使用第三方编译器。

总结

  • Mac Silicon操作系统是核心影响因素,ARM架构的预编译依赖包适配不足;
  • Cython版本不兼容是Python 3.8安装失败的直接原因;
  • 优先选择官方ARM专属安装包,其次考虑源码编译或指定依赖版本的方案。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 11:48:24