PsychoPy
- 类型
- 开源实验构建与刺激呈现软件
- 编程语言
- Python
- 首发时间
- 2000 年代初(PsychoPy2 起公开广泛使用)
- 许可
- 开源(GPL 系)
- 运行平台
- Windows、macOS、Linux
- 主要界面
- Builder(图形化)与 Coder(脚本)
- 分发渠道
- PyPI、Debian 等发行版仓库、官方独立安装包
- 维护方
- Open Science Tools 及社区
- 官网
- psychopy.org
PsychoPy 是一个开源 Python 软件包,用于在行为科学中创建实验,目标是同时做到对心理物理学足够精确、对初学者足够易用。11PsychoPypypi.org前往参考资料 ↓在新标签页中打开
PsychoPy 提供 Builder 图形化视图与 Coder 脚本视图两种使用方式:Builder 通过 Routine 与 Flow 的组合快速搭建实验,Coder 则直接编写 Python 代码。22Builder conceptspsychopy.org前往参考资料 ↓在新标签页中打开|33中国科学院心理研究所公共技术中心成功举办PsychoPy Coder培训psych.ac.cn前往参考资料 ↓在新标签页中打开
历史与版本演进
从 PsychoPy2 到 PsychoPy3
PsychoPy 由 Jonathan Peirce(乔纳森·皮尔斯)等人开发,是一个基于 Python 与 OpenGL 的心理物理学/心理学实验工具包,采用 GNU GPLv3(或更新版本)许可发布。66PsychoPy memo (Ashida)psy.bun.kyoto-u.ac.jp前往参考资料 ↓在新标签页中打开|77psychopypypi.org前往参考资料 ↓在新标签页中打开
PsychoPy 的版本号在 1.x 时代采用「1.71.00」这类三段式编号,PyPI 上可查到 1.71.00 版于 2011 年 10 月 2 日发布,作者署名为 Jonathan Peirce。77psychopypypi.org前往参考资料 ↓在新标签页中打开
从 PsychoPy2 到 PsychoPy3 的过渡中,界面外观发生了明显变化;对不习惯新界面的用户,可以在「视图」菜单的「主题」中选择 Classic,使图标恢复成与 PsychoPy2 时代教材插图一致的样子。66PsychoPy memo (Ashida)psy.bun.kyoto-u.ac.jp前往参考资料 ↓在新标签页中打开
京都大学 Ashida 的 PsychoPy 教学材料原本以 PsychoPy2 编写,但作者明确指出其中大部分内容可以直接在 PsychoPy3 上执行,因此新入门者没有必要特意退回 PsychoPy2。66PsychoPy memo (Ashida)psy.bun.kyoto-u.ac.jp前往参考资料 ↓在新标签页中打开
PsychoPy 官方教材《Building Experiments in PsychoPy》由 Jonathan Peirce 与 Michael MacAskill 合著,并已推出对应 PsychoPy3 的第二版,说明从 PsychoPy2 到 PsychoPy3 的迁移伴随了配套文档的整体更新。66PsychoPy memo (Ashida)psy.bun.kyoto-u.ac.jp前往参考资料 ↓在新标签页中打开
进入 2020 年代后,PsychoPy 的版本编号改为「年份.序号.修订号」的形式,例如 2025.1.0、2025.2.4、2026.1.0、2026.2.4 等,PyPI 上可见 2026.2.4 于 2026 年 9 月 14 日发布。77psychopypypi.org前往参考资料 ↓在新标签页中打开
关于 PsychoPy3 相对 PsychoPy2 是否在计时精度上有实质提升,教学材料给出的说法是:用 Builder 还是用 Coder 编写并不改变精度,因此不必为了精度而放弃 Builder;这一判断针对的是 Builder 与 Coder 的对比,而非 PsychoPy2 与 PsychoPy3 的对比。66PsychoPy memo (Ashida)psy.bun.kyoto-u.ac.jp前往参考资料 ↓在新标签页中打开
对立说法有用户与教学者认为 PsychoPy3 在界面与底层实现上的改动较大,迁移时需重新核对旧脚本与实验设置,不能简单视为「外观变化、行为不变」的升级。66PsychoPy memo (Ashida)psy.bun.kyoto-u.ac.jp前往参考资料 ↓在新标签页中打开
版本号与发布节奏
PsychoPy 在 PyPI 上的发布记录可追溯到 2009 年:1.50.04 版本的页面日期为 2009 年 9 月 14 日,说明该项目在 2000 年代末就已通过 Python 包索引对外分发。88psychopy - Psychophysics toolkit for Pythonpypi.org前往参考资料 ↓在新标签页中打开
早期 PsychoPy 的版本号采用「主版本.次版本.修订号」的三段式数字,例如 1.50.04、1.71.00;这一编号风格在 1.x 系列中长期沿用。77psychopypypi.org前往参考资料 ↓在新标签页中打开|88psychopy - Psychophysics toolkit for Pythonpypi.org前往参考资料 ↓在新标签页中打开
从 PyPI 的发布历史看,PsychoPy 后来改用「年份.序号.修订号」的日历式版本号,例如 2025.1.0、2025.2.4、2026.2.4,年份段对应发布年份,第二段区分该年内的功能发布批次。77psychopypypi.org前往参考资料 ↓在新标签页中打开
在日历式版本号下,PsychoPy 的发布节奏相当密集:2025 年内可见 2025.1.0(4 月 5 日)、2025.1.1(5 月 12 日)、2025.2.1(10 月 18 日)、2025.2.2(11 月 26 日)、2025.2.3(12 月 2 日)等多个版本,2026 年上半年又连续发布 2026.1.0 至 2026.1.3 以及 2026.2.0 至 2026.2.4。77psychopypypi.org前往参考资料 ↓在新标签页中打开
同一功能批次内,修订号递增的版本(如 2026.2.1、2026.2.2、2026.2.3、2026.2.4)间隔往往只有数天到数周,呈现「功能版本 + 快速修补」的双层节奏,而非每个版本都引入新特性。77psychopypypi.org前往参考资料 ↓在新标签页中打开
PyPI 上每个 PsychoPy 版本条目均标注「2 release files」,即同时提供两个分发包文件,这与该项目同时面向不同平台/安装方式分发的情况相符。77psychopypypi.org前往参考资料 ↓在新标签页中打开|88psychopy - Psychophysics toolkit for Pythonpypi.org前往参考资料 ↓在新标签页中打开
向 PsychoPy Studio 的重构
PsychoPy 的桌面图形应用长期以「PsychoPy App」(亦称 PsychoPy Standalone)之名存在,其代码库是一个基于 wxPython 的应用程序,作用是为 PsychoPy 库提供创建实验的图形界面外壳。99GitHub - psychopy/psychopy-app: This is the code for the Python-written PsychoPy Application (now being replace by PsychoPy Studio)github.com前往参考资料 ↓在新标签页中打开
psychopy/psychopy-app 仓库的说明文字明确写道,该应用「now being replaced by PsychoPy Studio」,即正在被 PsychoPy Studio 取代;这标志着 PsychoPy 图形前端从 wxPython 单体应用向新架构迁移的官方方向。99GitHub - psychopy/psychopy-app: This is the code for the Python-written PsychoPy Application (now being replace by PsychoPy Studio)github.com前往参考资料 ↓在新标签页中打开
psychopy-app 仓库的提交历史规模为 169 次提交(截至抓取时),说明该 wxPython 应用是一个经过多年迭代、但体量相对有限的维护型代码库,而非持续大规模扩张的主干项目。99GitHub - psychopy/psychopy-app: This is the code for the Python-written PsychoPy Application (now being replace by PsychoPy Studio)github.com前往参考资料 ↓在新标签页中打开
在仓库结构上,psychopy-app 保留了 .github/workflows 与 building 等目录,表明其构建与分发流程(打包为独立安装版)是该项目的一等公民,这与「Standalone」这一别称所指向的开箱即用分发形态一致。99GitHub - psychopy/psychopy-app: This is the code for the Python-written PsychoPy Application (now being replace by PsychoPy Studio)github.com前往参考资料 ↓在新标签页中打开
关于重构的动因,公开材料只给出「被 PsychoPy Studio 取代」这一结论性表述,并未系统说明技术原因;因此把重构归因于单一因素(如 wxPython 生态老化、Builder 代码耦合过深或跨平台打包困难)的说法,目前缺乏一手出处支撑。99GitHub - psychopy/psychopy-app: This is the code for the Python-written PsychoPy Application (now being replace by PsychoPy Studio)github.com前往参考资料 ↓在新标签页中打开
设计目标与定位
精确性与易用性的平衡
PsychoPy 官方在包描述中把自身的设计目标概括为一句话式的四条并列要求:精确到足以做心理物理学(psychophysics)、简单到足以用于教学、灵活到足以应付其他一切用途,并且既能在本地 Python 脚本中运行实验,也能在线上以 JavaScript 运行。这四条并列本身就是「精确性」与「易用性」被同时写进项目定位的直接证据。11PsychoPypypi.org前往参考资料 ↓在新标签页中打开|1111PsychoPypypi.org前往参考资料 ↓在新标签页中打开
为同时满足精确性与易用性这两端,PsychoPy 采取的做法是提供两种可选界面:面向图形化搭建的 Builder 与面向代码编写的 Python 脚本接口。官方表述把这一「界面二选一」直接说成是达成上述目标的手段,即易用性由 Builder 承担、灵活性与精细控制由代码层承担。11PsychoPypypi.org前往参考资料 ↓在新标签页中打开|1111PsychoPypypi.org前往参考资料 ↓在新标签页中打开
PsychoPy 的自我描述强调整个应用与库都用 Python 编写且跨平台,这意味着「精确性」并不是靠平台专属的底层实现换来的,而是在通用 Python 技术栈上追求计时与呈现精度。这一取舍使它易于分发和教学部署,但也把精度上限与 Python 及所依赖图形后端的性能绑在一起。11PsychoPypypi.org前往参考资料 ↓在新标签页中打开
在项目对自身的介绍中,PsychoPy 被同时描述为三样东西:可在 Python 脚本中调用的库、带 Python 编辑功能的脚本编辑器,以及带图形用户界面用于搭建实验的应用程序。这种「一个项目、多种形态」的组织方式,正是它试图在同一套代码基础上兼顾教学易用与科研精确的结构性安排。1010Introductions — Workshops for PsychoPy 2020 2020workshops.psychopy.org前往参考资料 ↓在新标签页中打开
「精确到足以做心理物理学」与「简单到足以用于教学」这两个目标之间存在天然张力:面向教学的图形化封装通常会隐藏时序与刷新控制细节,而心理物理学实验恰恰要求对这些细节有显式把握。PsychoPy 的定位不是在其中一端做到极致,而是宣称用同一个包覆盖从课堂演示到严格心理物理学实验的连续谱。11PsychoPypypi.org前往参考资料 ↓在新标签页中打开|1111PsychoPypypi.org前往参考资料 ↓在新标签页中打开
对立说法批评意见认为,图形化 Builder 隐藏了底层时序细节,用其搭建的实验未必能达到心理物理学级别的严格计时要求,因此「同一个包既够教学又够心理物理学」的说法在实践层面被打了折扣,高精度需求仍须回到代码层自行控制。11PsychoPypypi.org前往参考资料 ↓在新标签页中打开
面向心理物理学的时间精度
PsychoPy 把「面向心理物理学实验的时间精度」当作核心设计目标之一:它建立在 Python 之上,同时提供手写代码(Coder)与图形化 Builder 两条路径,使不具备编程经验的用户也能构建对呈现时序有要求的实验,而有经验的程序员则能更快、更少出错地完成实验搭建。1212Comparing PsychoPy with Psychtoolbox — PsychoPy®psychopy.org前往参考资料 ↓在新标签页中打开
在官方对 PsychoPy 与 Psychtoolbox 的对比说明中,两者被并列为用于神经科学与心理学实验设计的开源软件包,PsychoPy 的差异化定位在于以 Python 为基础、并额外提供被广泛使用的图形化 Builder 界面,从而降低实验构建的门槛。1212Comparing PsychoPy with Psychtoolbox — PsychoPy®psychopy.org前往参考资料 ↓在新标签页中打开
官方对比文档对 Psychtoolbox 的 MATLAB 脚本路线提出了批评,认为脚本冗长、MATLAB 并非为无差错编程方法而设计、代码不是面向对象的、函数不支持命名参数,因而更容易受用户失误影响;这一比较是 PsychoPy 一方给出的定位论述,而非独立第三方评测。1212Comparing PsychoPy with Psychtoolbox — PsychoPy®psychopy.org前往参考资料 ↓在新标签页中打开
对立说法Psychtoolbox 长期被大量高时间精度心理物理学研究采用,其社区与文献通常认为 MATLAB 路线在时序控制上成熟可靠,PsychoPy 官方文档中的上述比较属于竞品视角的单方面陈述,不能视为研究界的共识结论。1212Comparing PsychoPy with Psychtoolbox — PsychoPy®psychopy.org前往参考资料 ↓在新标签页中打开
与商业实验软件的比较
PsychoPy 与商业实验软件(如 E-Prime、Presentation、MATLAB 上的 Psychtoolbox 生态)常被放在一起比较,但 PsychoPy 官方在比较页面中主要对标的是同为开源软件的 Psychtoolbox 与 OpenSesame,而非逐一列举商业产品的功能与价格;因此关于「PsychoPy 相对商业软件孰优孰劣」的讨论,多数证据来自第三方综述与用户调查,而非厂商中立评测。1212Comparing PsychoPy with Psychtoolbox — PsychoPy®psychopy.org前往参考资料 ↓在新标签页中打开|1313Comparing PsychoPy with Open Sesame — PsychoPy®psychopy.org前往参考资料 ↓在新标签页中打开
对立说法支持者认为 PsychoPy 免费开源、可查看并修改源码、跨平台,且 Builder 生成的 Python 代码可导出复用,在成本与可审计性上优于按许可证收费的商业软件。1212Comparing PsychoPy with Psychtoolbox — PsychoPy®psychopy.org前往参考资料 ↓在新标签页中打开
对立说法反对者指出商业软件(如 E-Prime、Presentation)提供厂商级技术支持、经过验证的计时保证与成熟的硬件生态,在需要严格技术支持与责任担保的实验室场景中仍有不可替代性。1212Comparing PsychoPy with Psychtoolbox — PsychoPy®psychopy.org前往参考资料 ↓在新标签页中打开
PsychoPy 官方比较文档强调其相对 Psychtoolbox 的定位差异:PsychoPy 基于 Python,同时提供图形化 Builder 界面与手写代码的 Coder 界面,使编程经验有限的用户也能上手,而有经验的程序员则能更快、更少出错地搭建实验。1212Comparing PsychoPy with Psychtoolbox — PsychoPy®psychopy.org前往参考资料 ↓在新标签页中打开
PsychoPy 官方文档称 Psychtoolbox 实验需用 MATLAB 脚本编写,脚本较长且 MATLAB 并非为无错编程方法设计,代码不是面向对象的,也不支持函数命名参数,因此函数调用包含很长的参数列表,较易受用户错误影响。这一说法来自 PsychoPy 一方,属于有立场的比较陈述,不宜当作中立结论。1212Comparing PsychoPy with Psychtoolbox — PsychoPy®psychopy.org前往参考资料 ↓在新标签页中打开
对立说法Psychtoolbox 社区与使用者通常反驳这一评价,指出 PTB 经过长期验证、计时精度高,且其 MATLAB 接口的显式参数列表恰恰提高了可读性与可预测性,错误多寡取决于使用者水平而非语言范式。1212Comparing PsychoPy with Psychtoolbox — PsychoPy®psychopy.org前往参考资料 ↓在新标签页中打开
在与 OpenSesame 的比较中,PsychoPy 官方文档承认两者都基于 Python,且 OpenSesame 将 PsychoPy 作为可选「后端」之一,其文档在需要良好计时时推荐使用 PsychoPy 后端;但该文档同时主张这一后端仍不如直接使用 PsychoPy 本身。后半句是 PsychoPy 一方的立场性判断。1313Comparing PsychoPy with Open Sesame — PsychoPy®psychopy.org前往参考资料 ↓在新标签页中打开
对立说法OpenSesame 一方及其用户可能认为,通过 PsychoPy 后端已能获得足够计时精度,而 OpenSesame 更简洁的界面与更低的入门门槛对教学与非编程用户更友好,二者定位不同而非高下之分。1313Comparing PsychoPy with Open Sesame — PsychoPy®psychopy.org前往参考资料 ↓在新标签页中打开
PsychoPy 官方比较文档指出,PsychoPy 与 OpenSesame 都提供图形界面并允许插入代码片段,但 PsychoPy 额外允许查看 Builder 生成的代码,并可用 Coder 界面以 Python 手写实验,而这两点在 OpenSesame 中无法做到。1313Comparing PsychoPy with Open Sesame — PsychoPy®psychopy.org前往参考资料 ↓在新标签页中打开
PsychoPy 官方文档把「时间性」列为自身设计重心,称其一切围绕时间展开,并以此与 OpenSesame 的用户定位相区分;这构成 PsychoPy 相对于部分图形化实验工具的核心卖点,即刺激呈现与时间控制的精细度。1313Comparing PsychoPy with Open Sesame — PsychoPy®psychopy.org前往参考资料 ↓在新标签页中打开
从定位上看,PsychoPy 以免费开源、跨平台、Builder 与 Coder 双轨并行的方式,主要争夺的是原本由商业软件与 MATLAB 系工具占据的实验搭建场景;其比较文档的论述框架本身即反映出这一定位:以开源工具之间的差异说明自身优势,而非以价格或许可证条款直接对标商业产品。1212Comparing PsychoPy with Psychtoolbox — PsychoPy®psychopy.org前往参考资料 ↓在新标签页中打开|1313Comparing PsychoPy with Open Sesame — PsychoPy®psychopy.org前往参考资料 ↓在新标签页中打开
Builder 图形化构建
Routine 与 Flow 的概念模型
在 PsychoPy 的 Builder 视图中,实验被组织为两个相互配合的层次:Routine(例程)描述单个试次内部发生什么,Flow(流程)描述这些例程以何种顺序出现、如何重复。官方文档明确把实验定义为「由一个或多个 Routine 组成」,并说明多个 Routine 在 Flow 中被组合起来,由 Flow 控制它们的发生顺序与重复方式。1414Builder concepts — PsychoPy v1.84.0psychopy.readthedocs.io前往参考资料 ↓在新标签页中打开|1515Routines — PsychoPy®psychopy.org前往参考资料 ↓在新标签页中打开
Routine 是 Builder 中的基本功能单元,一个 Routine 可以规定一个试次内各事件的时间安排,也可以用于呈现指导语或反馈界面;换言之,Routine 并不等同于「试次」,它只是可复用的时间结构片段。1515Routines — PsychoPy®psychopy.org前往参考资料 ↓在新标签页中打开
Routine 内部由若干 Component(组件)构成,组件决定某个刺激何时出现、或某个反应如何被记录;一个 Routine 可以加入任意数量的组件,每个组件在 Routine 视图中占一行,显示其起止时间,且不同组件的时间区间允许重叠。1515Routines — PsychoPy®psychopy.org前往参考资料 ↓在新标签页中打开
Builder 主界面按功能划分为多个面板,其中左上方面板用于查看和编辑实验的 Routine,另一个面板用于查看 Flow;这种「Routine 编辑区 + Flow 编辑区」的双面板布局是 Builder 概念模型在界面上的直接体现。1414Builder concepts — PsychoPy v1.84.0psychopy.readthedocs.io前往参考资料 ↓在新标签页中打开
新建 Routine 有两条入口:在 Flow 面板中选择「Insert Routine」,或使用 Experiment 菜单;Routine 内各条目在界面上的显示尺寸可通过 View 菜单调整。1515Routines — PsychoPy®psychopy.org前往参考资料 ↓在新标签页中打开
Routine 面板的时间轴在早期版本文档中被描述为固定刻度、以秒为单位,这意味着组件在 Routine 内的相对时序是可视化、可对齐的,但该轴的显示比例并不随实验总时长自动缩放。1515Routines — PsychoPy®psychopy.org前往参考资料 ↓在新标签页中打开
Builder 视图的设计目标是让实验心理学与认知神经科学领域的广泛实验能够被快速开发,Routine 与 Flow 的两级抽象正是为降低这类实验的搭建门槛而设。1414Builder concepts — PsychoPy v1.84.0psychopy.readthedocs.io前往参考资料 ↓在新标签页中打开
关于 Routine 与 Flow 的分层是否足以覆盖复杂实验设计,存在不同实践取向:一部分用户认为通过在 Flow 中嵌套循环与条件分支即可表达绝大多数设计,另一部分用户则认为复杂随机化与自适应逻辑仍需退回 Coder 脚本层实现,Builder 的两级模型只是起点而非完备方案。1414Builder concepts — PsychoPy v1.84.0psychopy.readthedocs.io前往参考资料 ↓在新标签页中打开|1515Routines — PsychoPy®psychopy.org前往参考资料 ↓在新标签页中打开
对立说法官方文档将 Builder 定位为可快速开发「广泛范围」实验的界面,暗示两级模型在设计覆盖面上具有较强通用性。1414Builder concepts — PsychoPy v1.84.0psychopy.readthedocs.io前往参考资料 ↓在新标签页中打开
对立说法文档同时说明 Routine 与 Flow 各自承担时序与顺序控制,未宣称其可替代脚本编程,复杂逻辑仍需脚本层支持。1515Routines — PsychoPy®psychopy.org前往参考资料 ↓在新标签页中打开
组件(Components)体系
PsychoPy 的 Builder 视图把实验拆成 Routine(例程)与 Flow(流程)两层:Routine 描述刺激、指导语与反应的时间安排,Flow 则把多个 Routine 串成完整实验;组件(Component)是填充 Routine 的基本单元,实验者从右侧组件面板把组件图标拖入 Routine 来搭建试次。1616Builder concepts — PsychoPy v2026.1.0devdocs.psychopy.org前往参考资料 ↓在新标签页中打开|1818Chapter 21 The Builder and its parts | The Hitchhiker’s Guide to PSGY1001psychology.nottingham.ac.uk前往参考资料 ↓在新标签页中打开
Builder 的 Routine 采用类似视频剪辑软件的轨道式(track-based)视图,同一 Routine 内的多个组件可以各自设定起止时刻,从而反复呈现或彼此在时间上重叠。1616Builder concepts — PsychoPy v2026.1.0devdocs.psychopy.org前往参考资料 ↓在新标签页中打开
在 Builder 界面中,组件以图标形式列在最右侧的面板里,实验者通过点击或拖拽图标把组件加入当前 Routine;组件被加入后,其可配置参数会出现在该组件的对话框中。1717Adding a new Builder Component — PsychoPy v2026.1.0devdocs.psychopy.org前往参考资料 ↓在新标签页中打开|1818Chapter 21 The Builder and its parts | The Hitchhiker’s Guide to PSGY1001psychology.nottingham.ac.uk前往参考资料 ↓在新标签页中打开
每个 Builder 组件本质上是一组参数定义加上若干段代码钩子:开发者声明组件需要哪些参数(这些参数会自动出现在组件对话框里),并指定在脚本的不同时点(如 Routine 开始、每一帧、实验结束等)应调用什么代码。1717Adding a new Builder Component — PsychoPy v2026.1.0devdocs.psychopy.org前往参考资料 ↓在新标签页中打开
新增 Builder 组件不需要修改 Builder 的核心代码:组件会被自动检测并以图标形式显示给实验者,因此第三方或实验室自建的组件可以较容易地接入 Builder 生态;许多组件只需继承 _base 或 _visual 基类即可实现。1717Adding a new Builder Component — PsychoPy v2026.1.0devdocs.psychopy.org前往参考资料 ↓在新标签页中打开
教学材料常把组件比作做菜的“原料”:要搭出一个试次,需要把若干组件组合进 Routine,组件的参数设置决定了刺激内容、呈现时长与反应采集方式。1818Chapter 21 The Builder and its parts | The Hitchhiker’s Guide to PSGY1001psychology.nottingham.ac.uk前往参考资料 ↓在新标签页中打开
关于 Builder 组件体系是否足以覆盖复杂实验设计,研究实践中的评价并不一致:一部分使用者认为图形化组件加参数设置已能覆盖大多数行为与认知实验,另一部分使用者则认为一旦涉及条件逻辑、自适应呈现或复杂随机化,仍需退回 Coder 手写脚本或编写自定义组件。1616Builder concepts — PsychoPy v2026.1.0devdocs.psychopy.org前往参考资料 ↓在新标签页中打开|1717Adding a new Builder Component — PsychoPy v2026.1.0devdocs.psychopy.org前往参考资料 ↓在新标签页中打开
对立说法官方文档强调 Builder 面向“快速开发广泛的实验”,并把自定义组件作为扩展路径,暗示组件体系可通过扩展满足复杂需求。1616Builder concepts — PsychoPy v2026.1.0devdocs.psychopy.org前往参考资料 ↓在新标签页中打开|1717Adding a new Builder Component — PsychoPy v2026.1.0devdocs.psychopy.org前往参考资料 ↓在新标签页中打开
对立说法教学材料把组件视为构建实验的基本积木,倾向于认为掌握组件即可完成课程级实验设计。1818Chapter 21 The Builder and its parts | The Hitchhiker’s Guide to PSGY1001psychology.nottingham.ac.uk前往参考资料 ↓在新标签页中打开
条件文件与参数化设计
在 PsychoPy Builder 中,一个实验由三部分构成:单一的 Flow 规定事件发生的顺序以及是否在 Loop 中重复;一个或多个 Routine 在 Flow 中被组合起来;若干 Component 组合成 Routine。1919Building better experiments — Workshops for PsychoPy 2020 2020workshops.psychopy.org前往参考资料 ↓在新标签页中打开
Builder 的 Loop 通过条件文件(conditions file)来驱动试次的参数化:条件文件通常用 Excel 创建,在其中加入变量列,每一行对应一个试次,列名即变量名,可在 Component 的字段中被引用。2020Setting up offline experiments - INF Guidelines Wikicrc1646.pages.ub.uni-bielefeld.de前往参考资料 ↓在新标签页中打开
条件文件与参数化设计把「实验结构」和「具体刺激取值」分离:Flow 与 Routine 定义流程骨架,条件文件提供逐试次的取值表,从而无需为每个试次手工搭建组件。1919Building better experiments — Workshops for PsychoPy 2020 2020workshops.psychopy.org前往参考资料 ↓在新标签页中打开|2020Setting up offline experiments - INF Guidelines Wikicrc1646.pages.ub.uni-bielefeld.de前往参考资料 ↓在新标签页中打开
Builder 生成的实验可以被编译(compile)为 Python 或 JavaScript 脚本,用户可切换到 Coder 查看「底层」代码,从而理解条件文件中的变量是如何被写入脚本并逐试次赋值的。2121Extending Builder with code — Workshopsworkshops.psychopy.org前往参考资料 ↓在新标签页中打开
Builder 在生成脚本时并不知道用户的意图,因此会为各种可能情况预先规划代码,导致编译出的脚本比手写脚本冗长得多,尤其在启动/停止每个刺激或组件时更为复杂。2121Extending Builder with code — Workshopsworkshops.psychopy.org前往参考资料 ↓在新标签页中打开
对于标准范式,在 Builder 中通过图形界面加条件文件搭建通常比手写代码更容易;而图形界面无法表达的需求,则需要借助编写代码来扩展。2121Extending Builder with code — Workshopsworkshops.psychopy.org前往参考资料 ↓在新标签页中打开
对立说法有观点认为,一旦实验涉及复杂的条件依赖、自适应试次选择或在线计算刺激参数,条件文件加图形组件的组合会迅速变得难以维护,此时直接写脚本反而更清晰、更可控。2121Extending Builder with code — Workshopsworkshops.psychopy.org前往参考资料 ↓在新标签页中打开
Coder 脚本编程
Python API 结构
PsychoPy 的 Coder 视图是一个面向 Python 的脚本编辑器,用户在其中编写的实验脚本通过导入 psychopy 包来调用其 API;Builder 生成的实验同样以 Python 脚本形式存在,可在 Coder 中查看和修改,因此两套界面共享同一套底层库。2222PsychoPy documentation: API referencepsychopy.org前往参考资料 ↓在新标签页中打开|2323PsychoPy documentation: Builder to Coderpsychopy.org前往参考资料 ↓在新标签页中打开
PsychoPy 的顶层包按功能划分为若干子模块,核心包括负责窗口与刺激呈现的 visual、负责声音刺激的 sound、负责事件与时间调度的 core、负责硬件接口的 hardware、负责数据读写的 data,以及负责实验流程控制的 flow。2222PsychoPy documentation: API referencepsychopy.org前往参考资料 ↓在新标签页中打开
在 Coder 中,一个典型实验脚本的基本结构是:从 psychopy import visual, core 等模块,创建 visual.Window 对象作为呈现窗口,在循环中绘制刺激并调用 Window.flip() 提交画面,最后调用 core.quit() 结束实验。2222PsychoPy documentation: API referencepsychopy.org前往参考资料 ↓在新标签页中打开|2424PsychoPy documentation: Tutorials and examplespsychopy.org前往参考资料 ↓在新标签页中打开
visual.Window 是 PsychoPy 呈现系统的核心对象,其构造参数包括窗口尺寸 size、单位 units(如 'pix'、'norm'、'height'、'deg' 等)、全屏开关 fullscr、背景色 color 与刷新率相关设置;刺激对象的位置与大小解释依赖于窗口所选的单位。2222PsychoPy documentation: API referencepsychopy.org前往参考资料 ↓在新标签页中打开|2525PsychoPy documentation: psychopy.visual.Windowpsychopy.org前往参考资料 ↓在新标签页中打开
PsychoPy 的刺激类采用统一的属性接口:多数视觉刺激继承自视觉基类,可通过 setPos、setSize、setOrientation、setColor 等方法在运行时修改属性,也可在构造时以关键字参数一次性设定;draw() 负责把刺激送入后台缓冲,Window.flip() 才真正将其呈现到屏幕。2222PsychoPy documentation: API referencepsychopy.org前往参考资料 ↓在新标签页中打开|2525PsychoPy documentation: psychopy.visual.Windowpsychopy.org前往参考资料 ↓在新标签页中打开
core 模块提供实验计时与流程控制的基础设施,包括用于高精度计时的 core.Clock、用于等待的 core.wait,以及用于退出实验的 core.quit;Clock 对象可反复 reset 以获得相对时间戳,是脚本中记录反应时的常用手段。2222PsychoPy documentation: API referencepsychopy.org前往参考资料 ↓在新标签页中打开|2626PsychoPy documentation: psychopy.corepsychopy.org前往参考资料 ↓在新标签页中打开
PsychoPy 的 event 模块(psychopy.event)封装了键盘、鼠标等输入设备的轮询接口,常用函数包括 event.waitKeys、event.getKeys 与 event.clearEvents;getKeys 返回自上次调用以来发生的按键列表,这一语义对编写试次循环时的按键处理很关键。2222PsychoPy documentation: API referencepsychopy.org前往参考资料 ↓在新标签页中打开|2727PsychoPy documentation: psychopy.eventpsychopy.org前往参考资料 ↓在新标签页中打开
PsychoPy 的 data 模块提供实验数据的写出工具,其中 TrialHandler 负责按条件列表生成并管理试次序列,支持随机化与顺序控制;ExperimentHandler 则在多个 TrialHandler 之上汇总数据,并可调用 saveAsWideText 等函数把结果导出为便于统计软件读取的文本文件。2222PsychoPy documentation: API referencepsychopy.org前往参考资料 ↓在新标签页中打开|2828PsychoPy documentation: psychopy.datapsychopy.org前往参考资料 ↓在新标签页中打开
PsychoPy 的 sound 模块提供声音刺激的播放接口,其中 Sound 类用于加载与播放音频文件或合成音,并可在部分后端上报告播放起止时间;不同音频后端在延迟与时间精度上存在差异,因此对时间敏感的声音实验需要谨慎选择后端。2222PsychoPy documentation: API referencepsychopy.org前往参考资料 ↓在新标签页中打开
PsychoPy 的 hardware 子包为多种外部设备提供统一封装,涵盖串口、并行口、反应盒、眼动仪与脑电触发等;这些设备类通常遵循相似的打开、发送、关闭接口,使脚本可以在不重写实验逻辑的前提下替换硬件。2222PsychoPy documentation: API referencepsychopy.org前往参考资料 ↓在新标签页中打开
PsychoPy 的 API 在版本演进中经历过不兼容变更,例如从 Python 2 迁移到 Python 3、以及部分模块的重命名与弃用;因此旧脚本在新版本上运行时可能需要修改导入路径或函数签名,官方文档为此提供了迁移说明。2222PsychoPy documentation: API referencepsychopy.org前往参考资料 ↓在新标签页中打开|2929PsychoPy documentation: Changelog and migration notespsychopy.org前往参考资料 ↓在新标签页中打开
关于脚本编程与 Builder 图形化构建哪种方式更适合科研实验,社区中存在不同看法:一种观点认为 Builder 降低了入门门槛且生成的脚本可读,适合教学与常规实验;另一种观点认为只有直接编写脚本才能完全控制刺激时序与硬件交互,Builder 在复杂设计上仍需回退到 Coder。2323PsychoPy documentation: Builder to Coderpsychopy.org前往参考资料 ↓在新标签页中打开|3030PsychoPy: A Python library for creating experiments in behavioral sciencepeerj.com前往参考资料 ↓在新标签页中打开
对立说法支持 Builder 优先的一方强调其生成的脚本本身即为可读的 Python 代码,用户可在此基础上渐进学习编程,而不必从零手写。2323PsychoPy documentation: Builder to Coderpsychopy.org前往参考资料 ↓在新标签页中打开
对立说法支持脚本优先的一方指出,涉及精确帧级时序、自定义硬件协议或非标准实验流程时,图形界面提供的抽象不足以表达需求,必须直接使用底层 API。3030PsychoPy: A Python library for creating experiments in behavioral sciencepeerj.com前往参考资料 ↓在新标签页中打开
从 Builder 生成脚本
PsychoPy 作为应用程序有两个主要视图:Builder 视图与 Coder 视图,二者之下还有可直接调用的参考手册(API)。Builder 通过图形界面生成实验,而 Coder 视图用于直接编写 Python 脚本。3131Getting Started — PsychoPy v2026.1.0devdocs.psychopy.org前往参考资料 ↓在新标签页中打开
在 Builder 中搭建的实验可以随时被编译(compile)成 Python 脚本,以便进一步微调;官方文档把这一机制描述为有经验的程序员快速了解 PsychoPy 库与约定的捷径。3131Getting Started — PsychoPy v2026.1.0devdocs.psychopy.org前往参考资料 ↓在新标签页中打开
PsychoPy 官方文档明确建议:即使是有经验的程序员,在做线上(在线)研究时也应当使用 Builder 视图,因为 Builder 会同时生成实验的 JavaScript 版本,而纯手写 Python 脚本不会自动获得这一在线版本。3131Getting Started — PsychoPy v2026.1.0devdocs.psychopy.org前往参考资料 ↓在新标签页中打开
把 Builder 实验编译到 Coder 视图,是官方培训材料推荐的第一步做法:先编译、再查看「引擎盖下」生成的代码,从而理解 Builder 在后台如何组织实验流程。2121Extending Builder with code — Workshopsworkshops.psychopy.org前往参考资料 ↓在新标签页中打开
Builder 生成的脚本通常比手写脚本冗长得多:官方培训材料指出,生成代码包含大量手写时并不需要的部分,尤其是启动与停止每个刺激/组件的代码更为复杂,因为 Builder 无法预知使用者的意图,只能为各种可能情况预先安排。2121Extending Builder with code — Workshopsworkshops.psychopy.org前往参考资料 ↓在新标签页中打开
Builder 生成的脚本在结构上高度模式化,包含相似的导入语句、对象初始化、由字典创建对话框、以及 TrialHandler 等流程控制对象;官方培训材料把这种「代码复用很少、概念大量重复」视为生成脚本的典型特征。2121Extending Builder with code — Workshopsworkshops.psychopy.org前往参考资料 ↓在新标签页中打开
官方培训材料认为,在 Builder 中生成「标准」实验范式通常比手写代码更容易,而编写代码的价值在于完成图形界面做不到的事情;因此生成脚本的定位是补充与扩展,而非取代 Builder。2121Extending Builder with code — Workshopsworkshops.psychopy.org前往参考资料 ↓在新标签页中打开
关于生成脚本应作为主要工作方式还是仅作为学习与微调的起点,社区中存在不同取向:官方文档一方面鼓励用编译出的脚本做微调与学习,另一方面又建议连有经验的程序员在线上实验中仍以 Builder 为主,这两种建议在实际使用中可能被解读为对「以代码为中心」工作流的保留态度。3131Getting Started — PsychoPy v2026.1.0devdocs.psychopy.org前往参考资料 ↓在新标签页中打开|2121Extending Builder with code — Workshopsworkshops.psychopy.org前往参考资料 ↓在新标签页中打开
对立说法一种观点认为,编译出的脚本只是起点,最终实验逻辑仍应回到 Builder 中维护,以保证 Python 与 JavaScript 两个版本同步生成。3131Getting Started — PsychoPy v2026.1.0devdocs.psychopy.org前往参考资料 ↓在新标签页中打开
对立说法另一种观点认为,生成脚本暴露了 Builder 的全部实现细节,是学习 PsychoPy 库与约定的最佳入口,熟练后可逐步转向以代码为主的工作流。3131Getting Started — PsychoPy v2026.1.0devdocs.psychopy.org前往参考资料 ↓在新标签页中打开|2121Extending Builder with code — Workshopsworkshops.psychopy.org前往参考资料 ↓在新标签页中打开
自定义刺激与反应逻辑
在 PsychoPy 的 Coder 中,实验脚本通常以 psychopy 包提供的视觉、事件、时钟等模块为基础,由研究者自行组织刺激对象的创建、呈现与销毁流程;Builder 生成的脚本本质上也是同一套 Python API 的展开,因此可以在 Coder 中直接阅读和修改。2121Extending Builder with code — Workshopsworkshops.psychopy.org前往参考资料 ↓在新标签页中打开
PsychoPy 官方教程指出,Builder 生成的脚本比手写脚本包含多得多的代码,尤其是在每个刺激/组件的启动与停止、以及判断所有组件是否结束(即试次是否结束)方面,代码明显更复杂;这是因为 Builder 不知道研究者的意图,只能为所有可能情况做规划。2121Extending Builder with code — Workshopsworkshops.psychopy.org前往参考资料 ↓在新标签页中打开
官方工作坊材料把「用 Builder 生成标准范式」与「写代码做图形界面做不到的事」区分开来:标准范式在 Builder 中通常比手写代码更容易,而自定义逻辑则需要借助代码实现。2121Extending Builder with code — Workshopsworkshops.psychopy.org前往参考资料 ↓在新标签页中打开
在 Builder 中实现反馈的官方做法是插入 Code Component 生成反馈消息,再用 Text Component 呈现该消息;PsychoPy 会在整个实验过程中自动跟踪刺激与反应的各项属性,脚本只需知道去哪里读取这些属性。3232Builder - providing feedback — PsychoPy®psychopy.org前往参考资料 ↓在新标签页中打开
官方反馈教程的示例假定存在名为 trials 的 Loop,其中包含一个 Routine,Routine 内有一个名为 key_resp 的 Keyboard Component;代码示例中的变量名需要按实际实验改写。这说明自定义反应逻辑通常依赖对 Builder 组件命名与循环结构的显式引用。3232Builder - providing feedback — PsychoPy®psychopy.org前往参考资料 ↓在新标签页中打开
PsychoPy 的 Builder 可以把实验编译为 Python 或 JavaScript,编译后在 Coder 中查看生成代码是把自己的代码与 Builder 结合的第一步;这为在图形化流程中嵌入自定义刺激与反应逻辑提供了入口。2121Extending Builder with code — Workshopsworkshops.psychopy.org前往参考资料 ↓在新标签页中打开
关于自定义代码应写在 Code Component 的哪个区段(如 Begin Routine、Each Frame、End Routine),官方材料强调不同区段对应不同的执行时机,反馈与反应判断通常需要在试次结束阶段读取已记录的反应数据;但具体区段选择在实践中因实验设计而异,官方文档并未给出唯一推荐写法。3232Builder - providing feedback — PsychoPy®psychopy.org前往参考资料 ↓在新标签页中打开|2121Extending Builder with code — Workshopsworkshops.psychopy.org前往参考资料 ↓在新标签页中打开
对立说法部分教学材料主张尽量把逻辑放在 Each Frame 中以获得逐帧控制,而官方反馈教程的示例则主要在试次结束阶段处理反应与反馈。3232Builder - providing feedback — PsychoPy®psychopy.org前往参考资料 ↓在新标签页中打开|2121Extending Builder with code — Workshopsworkshops.psychopy.org前往参考资料 ↓在新标签页中打开
刺激呈现与时间控制
基于 OpenGL 的渲染后端
PsychoPy 的渲染在条件允许时全部走硬件加速的 OpenGL 路径:计算像素值所需的处理尽量交给显卡 GPU 而不是 CPU 完成,例如图像旋转时确定目标像素值与所需插值的工作由显卡自动完成。3333OpenGL and Rendering — PsychoPy®psychopy.org前往参考资料 ↓在新标签页中打开
PsychoPy 的窗口采用双缓冲(double buffering)机制:刺激先被绘制到显卡内存中的「后缓冲」(back buffer),而屏幕此时呈现的是「前缓冲」(front buffer);后缓冲在每帧开始时被清为窗口定义的背景色,随后各刺激被逐次「渲染」叠加进去。3333OpenGL and Rendering — PsychoPy®psychopy.org前往参考资料 ↓在新标签页中打开
PsychoPy 的 Window 对象可选用多种 OpenGL 窗口后端:pyglet 后端支持创建多个窗口、指定使用哪一块屏幕(多屏时)以及渲染视频;GLFW 后端是较新的补充,提供与 pyglet 大体相同的功能,但在复杂显示配置下灵活性更高。3434Window — PsychoPy v2026.1.0devdocs.psychopy.org前往参考资料 ↓在新标签页中打开
Pygame 后端在 PsychoPy 项目中已被官方标记为弃用(deprecated),项目方明确表示不会修复 pygame 特有的缺陷,因此它虽可能仍能运行,但不再是受支持的渲染路径。3434Window — PsychoPy v2026.1.0devdocs.psychopy.org前往参考资料 ↓在新标签页中打开
PsychoPy 的 Window 提供 getMsPerFrame 方法,在当前条件下至少跨 60 帧记录每一刷新(帧)的耗时,从而评估显示器刷新率的平均值、中位数与标准差,用于核验时间控制的实际表现。3434Window — PsychoPy v2026.1.0devdocs.psychopy.org前往参考资料 ↓在新标签页中打开
Window 的若干属性只能在初始化时设定,而颜色、色彩空间、gamma 等属性可在窗口创建之后修改,这一区分决定了刺激呈现参数在实验运行中能否动态调整。3434Window — PsychoPy v2026.1.0devdocs.psychopy.org前往参考资料 ↓在新标签页中打开
关于「哪种窗口后端在时间精度上更优」,官方文档并未给出统一结论:GLFW 被描述为在复杂显示配置下更灵活,pyglet 则被描述为功能完整且支持多窗口与视频渲染,二者定位互补而非简单替代,实际精度取决于显卡驱动、操作系统与显示配置。3333OpenGL and Rendering — PsychoPy®psychopy.org前往参考资料 ↓在新标签页中打开|3434Window — PsychoPy v2026.1.0devdocs.psychopy.org前往参考资料 ↓在新标签页中打开
对立说法有观点认为 GLFW 作为较新加入的后端,在帧同步与多显示器场景下应默认优先选用,pyglet 仅作为兼容性回退。3434Window — PsychoPy v2026.1.0devdocs.psychopy.org前往参考资料 ↓在新标签页中打开
对立说法也有观点认为 pyglet 后端经过更长时间的使用与验证,在既有实验脚本中更为稳妥,不应因「较新」而默认切换。3434Window — PsychoPy v2026.1.0devdocs.psychopy.org前往参考资料 ↓在新标签页中打开
帧同步与刷新率
PsychoPy 官方告警文档明确指出:在标准固定刷新率显示器上,视觉刺激的呈现时长只能是屏幕刷新周期的整数倍。以 60 Hz 显示器为例,每个刷新周期约为 1/60 秒(约 16.667 ms),因此刺激可以呈现 1 帧(约 16.667 ms)或 2 帧(约 33.333 ms),但无法呈现 20 ms 这类介于两帧之间的时长,因为那要求刺激持续略多于 1 帧,在物理上不可实现。35353115: Stimulus duration is not possible on a standard monitor refresh — PsychoPy®psychopy.org前往参考资料 ↓在新标签页中打开
PsychoPy 的告警 3115 标注其影响范围为「所有版本」(All versions),即帧量化限制并非某一版本的缺陷,而是软件在固定刷新率显示硬件上运行时的固有约束。35353115: Stimulus duration is not possible on a standard monitor refresh — PsychoPy®psychopy.org前往参考资料 ↓在新标签页中打开
PsychoPy 告警 3110 说明:当用户为视觉刺激设定的时长短于一个屏幕刷新周期时,程序无法按请求呈现,实际时长会被隐式向上取整到下一个帧时长;请求的起始或停止时间同样无法被精确呈现,准确的呈现时间必须以屏幕刷新率为增量。36363110: Stimulus duration is less than one screen refreshpsychopy.org前往参考资料 ↓在新标签页中打开
告警 3110 以 60 Hz 显示器为例给出具体数值:每个刷新周期约 16.6667 ms,因此可以呈现 16.7 ms 的刺激,却无法呈现 5 ms 的刺激,因为后者只相当于半个刷新周期。36363110: Stimulus duration is less than one screen refreshpsychopy.org前往参考资料 ↓在新标签页中打开
PsychoPy 官方对短刺激给出的建议做法是:不要直接指定毫秒级时长,而是按帧数指定,或改用能保证整帧呈现的时长值,从而避免因帧量化导致的呈现时间偏差。35353115: Stimulus duration is not possible on a standard monitor refresh — PsychoPy®psychopy.org前往参考资料 ↓在新标签页中打开
在实验设计实践中,使用 PsychoPy 搭建刺激呈现流程时,时间精度验证(timing validation)被视为必要环节,需与刺激呈现、事件标记等一同规划,以确认实际呈现时刻与预期一致。3737SKILL.mdgithub.com前往参考资料 ↓在新标签页中打开
关于帧同步能否真正保证刺激在预期的那一帧被显示,研究界存在分歧:一派认为在关闭垂直同步、启用独占全屏并配合高精度计时的情况下,帧翻转时刻可被可靠预测;另一派则指出操作系统合成器、显卡驱动与显示器内部处理会引入不确定延迟,仅靠软件层的帧计数不足以证明光子实际发出的时刻,必须借助光电二极管等外部测量手段加以验证。35353115: Stimulus duration is not possible on a standard monitor refresh — PsychoPy®psychopy.org前往参考资料 ↓在新标签页中打开|36363110: Stimulus duration is less than one screen refreshpsychopy.org前往参考资料 ↓在新标签页中打开
对立说法有观点认为,只要在 PsychoPy 中正确设置显示器刷新率并让刺激时长取整帧,软件报告的帧时间就足以代表实际呈现时间,无需额外硬件测量。35353115: Stimulus duration is not possible on a standard monitor refresh — PsychoPy®psychopy.org前往参考资料 ↓在新标签页中打开
对立说法另一种观点认为,软件层帧计数与真实光子输出之间存在系统性与随机性延迟,必须通过外部光电测量才能确认时间精度,仅依赖软件日志会高估计时准确性。36363110: Stimulus duration is less than one screen refreshpsychopy.org前往参考资料 ↓在新标签页中打开
反应时测量与输入设备
PsychoPy 官方文档对「能否达到毫秒级精度」给出的简短回答是「能」,并称其计时能力与现有任何同类软件包相当、在多数情况下更好;文档同时把详细计时研究指向 Bridges 等人 2020 年发表于 PeerJ 的评测。3838Can PsychoPy® deliver millisecond precision? — PsychoPy®psychopy.org前往参考资料 ↓在新标签页中打开
PsychoPy 官方文档强调,毫秒级精度不是软件单方面保证的属性:用户应在自己的硬件上实测自己实验刺激的计时,因为计算机常常未被优化配置,而编写不当的实验程序同样会破坏计时——这也是官方如今建议即便是熟练编程者也使用 Builder 的原因之一。3838Can PsychoPy® deliver millisecond precision? — PsychoPy®psychopy.org前往参考资料 ↓在新标签页中打开
PsychoPy 官方文档指出,刺激与反应计时的误差来源几乎从不在于时钟小数位数不够多,因此「换用高精度时钟」并不是提升计时质量的关键;这与部分软硬件厂商宣传的「时钟精度决定计时精度」说法相左。3838Can PsychoPy® deliver millisecond precision? — PsychoPy®psychopy.org前往参考资料 ↓在新标签页中打开
对立说法部分软件与硬件厂商主张,良好计时的关键在于使用高精度(小数位更多)的计算机时钟,暗示时钟分辨率是计时质量的决定因素。3838Can PsychoPy® deliver millisecond precision? — PsychoPy®psychopy.org前往参考资料 ↓在新标签页中打开
在 PsychoPy 官方教学工作坊材料中,对短暂呈现的刺激建议按帧数而非按时钟时间来安排呈现时长,即用窗口翻转的帧计数来控制刺激持续时间。3939Improvements — Workshopsworkshops.psychopy.org前往参考资料 ↓在新标签页中打开
硬件与外部设备接口
眼动仪与 EEG 集成
PsychoPy 与眼动仪、EEG 等外部设备的集成,在 Builder 层面主要通过两类组件实现:一类是负责与设备通信、发送标记或触发信号的组件(如并行端口、串行端口组件),另一类是负责在屏幕上划定感兴趣区(ROI)并据此判断注视进入/离开的 ROI 组件;后者可用于记录注视位置,或让试次在参与者注视目标或移开视线时推进。4040Communicating with external hardware using PsychoPy — Workshopsworkshops.psychopy.org前往参考资料 ↓在新标签页中打开
PsychoPy 官方工作坊材料指出,若扫描仪以模拟按键的方式发送触发,最简单的做法是在等待例程中放置一个 Keyboard 组件,把扫描仪将发送的键(例如 '5')写入允许按键列表;但 PsychoPy 无法区分扫描仪模拟的按键与真人按键,因此实验运行期间应避免在连接 PsychoPy 的键盘上打字,以免误触发。4040Communicating with external hardware using PsychoPy — Workshopsworkshops.psychopy.org前往参考资料 ↓在新标签页中打开
在需要高精度多模态同步的场景中,Lab Streaming Layer(LSL)是 PsychoPy 与 EEG、眼动仪集成的常用中间层:Pupil Labs 公开的 neon-eeg-sync 项目即通过 LSL 与 PsychoPy 把 Pupil Labs Neon 眼动仪与 EEG 系统做高精度时间同步,并提供了配套的 PsychoPy 脚本与同步事件分析笔记本。4141GitHub - pupil-labs/neon-eeg-sync: A multimodal integration pipeline for high-precision synchronization of EEG and Pupil Labs Neon via Lab Streaming Layer (LSL) and PsychoPy.github.com前往参考资料 ↓在新标签页中打开
关于 PsychoPy 与眼动仪、EEG 集成的最佳同步方案,研究实践中存在分歧:一派主张以硬件触发/并行端口等物理信号作为时间基准,认为其抖动最小;另一派主张以 LSL 等网络化流式协议统一时间戳,认为其部署更灵活、可跨设备扩展。两种路线在时间精度与工程复杂度上的取舍至今没有公认结论。4040Communicating with external hardware using PsychoPy — Workshopsworkshops.psychopy.org前往参考资料 ↓在新标签页中打开|4141GitHub - pupil-labs/neon-eeg-sync: A multimodal integration pipeline for high-precision synchronization of EEG and Pupil Labs Neon via Lab Streaming Layer (LSL) and PsychoPy.github.com前往参考资料 ↓在新标签页中打开
对立说法硬件触发派认为,只有物理电平信号才能提供微秒级、可审计的时间基准,网络流式方案受操作系统调度与网络栈影响,抖动不可控。4040Communicating with external hardware using PsychoPy — Workshopsworkshops.psychopy.org前往参考资料 ↓在新标签页中打开
对立说法流式协议派认为,LSL 等方案通过统一时钟与时间戳校正,已能满足多数认知实验的精度需求,且免去额外采集卡与布线的成本。4141GitHub - pupil-labs/neon-eeg-sync: A multimodal integration pipeline for high-precision synchronization of EEG and Pupil Labs Neon via Lab Streaming Layer (LSL) and PsychoPy.github.com前往参考资料 ↓在新标签页中打开
反应盒与串口设备
PsychoPy 通过串口(serial port)、并口(parallel port)以及编译好的驱动(Windows 的 dll 与 macOS 的 dylib)与外部硬件通信,官方文档称因此它可以与计算机能够连接的任何硬件对话。4242Overviewraw.githubusercontent.com前往参考资料 ↓在新标签页中打开
PsychoPy 为若干常见科研仪器预置了接口,官方概览中列举的包括 Spectrascan PR650、PR655、PR670 系列光度计与 Minolta LS110、LS100 亮度计,以及 Cambridge Research Systems 的设备等。4242Overviewraw.githubusercontent.com前往参考资料 ↓在新标签页中打开
在 PsychoPy 中,反应盒(response box)一类设备通常以串口设备的形式接入:实验脚本通过打开串口、按设备协议写入命令字节并读取返回字节来获得按键与反应时,这一路径依赖 pyserial 等串口库而非 PsychoPy 专属驱动。4242Overviewraw.githubusercontent.com前往参考资料 ↓在新标签页中打开
PsychoPy 自 2025.2.3 版本起提供 Device Manager(设备管理器),用于集中配置和管理显示器、键盘、鼠标及其他输入输出设备,并可在组件的 Device 选项卡中按名称选用已配置的设备。4343Device Manager — PsychoPy®psychopy.org前往参考资料 ↓在新标签页中打开
Device Manager 是较新的功能,仅存在于 PsychoPy 2025.2.3 及之后的版本;在此之前的版本中,串口与反应盒等设备需要在 Coder 视图里手写初始化代码,或在 Builder 中使用代码组件插入自定义脚本。4343Device Manager — PsychoPy®psychopy.org前往参考资料 ↓在新标签页中打开
关于串口反应盒是否比 USB 键盘或专用光电/并口方案更适合高精度反应时采集,研究界并无统一结论:串口方案的优势在于绕开操作系统键盘栈、由设备自身打时间戳,但其实际精度高度依赖具体设备的固件与波特率设置,需逐台实测验证。4242Overviewraw.githubusercontent.com前往参考资料 ↓在新标签页中打开
对立说法另一种观点认为,现代操作系统上的 USB 键盘配合 PsychoPy 自带的计时机制已能满足多数行为实验的毫秒级需求,额外引入串口反应盒带来的配置复杂度与兼容性风险未必值得。4242Overviewraw.githubusercontent.com前往参考资料 ↓在新标签页中打开
并行端口与触发
PsychoPy 在 Builder 视图中提供「并行端口」组件(Parallel Port component),位于 I/O 组件下拉菜单中,可用于向传统并行端口或 USB 设备发送信号。4444Communicating via a Parallel Port — PsychoPy®psychopy.org前往参考资料 ↓在新标签页中打开
PsychoPy 的并行端口输出组件(Parallel Port Out)既可以向并行端口发送触发,也可以向 LabJack 设备发送触发,二者在同一个组件中通过设备选择来区分。4646Parallel Port Out Component (docs/source/builder/components/parallelout.rst)raw.githubusercontent.com前往参考资料 ↓在新标签页中打开
并行端口输出组件的典型用法是在脑电(EEG)实验中把端口值设为 0 表示无刺激呈现,而在每个刺激开始/结束时把端口设为该刺激的标识值,从而让放大器记录到与刺激同步的触发标记。4646Parallel Port Out Component (docs/source/builder/components/parallelout.rst)raw.githubusercontent.com前往参考资料 ↓在新标签页中打开
并行端口输出组件的 Start data 与 Stop data 取值被限定在 0–255 范围内,即一个 8 位字节,这与标准并行端口数据寄存器的位宽一致。4646Parallel Port Out Component (docs/source/builder/components/parallelout.rst)raw.githubusercontent.com前往参考资料 ↓在新标签页中打开
并行端口组件同样可用于「记录」而非仅发送信号,例如读取按键盒(button box)通过并行端口引脚送来的反应;PsychoPy 官方文档将这一用法指向其 Discourse 论坛上的社区讨论帖。4444Communicating via a Parallel Port — PsychoPy®psychopy.org前往参考资料 ↓在新标签页中打开
在 fMRI 场景中,PsychoPy 的推荐做法与 EEG 相反:不是由程序向外部硬件发送触发,而是让实验等待检测到扫描仪发出的触发后再推进试次,以保证跨试次的时间一致性。4545Communicating with fMRI — PsychoPy®psychopy.org前往参考资料 ↓在新标签页中打开
PsychoPy 官方文档指出,由于血氧动力学响应相对头皮电压变化较为迟缓,fMRI 研究通常不像 EEG 研究那样需要在单个试次内达到亚毫秒级的时间精度,但跨试次的时间一致性仍然重要。4545Communicating with fMRI — PsychoPy®psychopy.org前往参考资料 ↓在新标签页中打开
关于并行端口触发是否足以支撑毫秒级时间精度,研究界并无统一结论:并口触发本身延迟低、抖动小,但其实际精度取决于操作系统、驱动与硬件链路,因此常被建议与光电二极管等独立校验手段配合使用,而非单独作为时间基准。4444Communicating via a Parallel Port — PsychoPy®psychopy.org前往参考资料 ↓在新标签页中打开|4646Parallel Port Out Component (docs/source/builder/components/parallelout.rst)raw.githubusercontent.com前往参考资料 ↓在新标签页中打开
对立说法一种观点认为,并行端口是实验室中最直接、抖动最低的触发通路,只要正确配置即可满足绝大多数 EEG/ERP 实验的同步需求,无需额外校验设备。4646Parallel Port Out Component (docs/source/builder/components/parallelout.rst)raw.githubusercontent.com前往参考资料 ↓在新标签页中打开
对立说法另一种观点认为,并口触发的实际时序受操作系统调度与 USB 转接环节影响,必须用光电二极管或示波器独立测量显示与触发的实际延迟,才能对时间精度作出结论。4444Communicating via a Parallel Port — PsychoPy®psychopy.org前往参考资料 ↓在新标签页中打开
实验数据与输出
数据文件格式
PsychoPy 一次实验运行可以同时输出多种文件类型,官方文档给出的典型组合是:用于快速浏览的 Excel 数据文件、用于检查错误信息的日志文件(Log file),以及用于详细分析的 .psydat 数据文件。4747Data outputs — PsychoPy®psychopy.org前往参考资料 ↓在新标签页中打开
PsychoPy 官方文档把输出文件归纳为四大类:Excel 2007 工作簿(.xlsx)、分隔文本数据文件(.csv、.tsv 或 .txt)、二进制数据文件(.psydat)以及日志文件(.log)。4848Generating outputs (datafiles) — PsychoPy v2026.1.0devdocs.psychopy.org前往参考资料 ↓在新标签页中打开
.psydat 是 PsychoPy 自有的二进制数据文件格式,官方定位是供详细分析使用;它与面向快速浏览的表格型输出并存,而不是替代关系。4747Data outputs — PsychoPy®psychopy.org前往参考资料 ↓在新标签页中打开|4848Generating outputs (datafiles) — PsychoPy v2026.1.0devdocs.psychopy.org前往参考资料 ↓在新标签页中打开
日志文件(.log)按时间顺序记录实验过程中发生的全部事件,其内容详略程度由使用者自行设定;官方明确指出日志文件用于数据分析其实相当不便,其主要用途是排查错误与回溯运行过程。4747Data outputs — PsychoPy®psychopy.org前往参考资料 ↓在新标签页中打开
在脚本层面,数据组织与保存由 psychopy.data 模块承担,其中 TrialHandler 处理预定义试次矩阵,ExperimentHandler 负责把同一研究中的多个循环合并到一起,StairHandler 与 QuestHandler 分别实现阶梯法与 QUEST 自适应程序。4949psychopy.data - functions for storing/saving/analysing data — PsychoPy®psychopy.org前往参考资料 ↓在新标签页中打开
psychopy.data 提供按时间顺序把每个试次的会话、刺激与数据值写入文本文件的功能,这是分隔文本输出(.csv/.tsv/.txt)在代码层的实现路径。4949psychopy.data - functions for storing/saving/analysing data — PsychoPy®psychopy.org前往参考资料 ↓在新标签页中打开
TrialHandler2 与 TrialHandlerExt 是在基础 TrialHandler 之上的扩展:前者支持运行中途更新试次信息,后者面向 oddball 类设计;这说明 PsychoPy 的数据容器并非单一实现,而是按实验设计需求分层提供。4949psychopy.data - functions for storing/saving/analysing data — PsychoPy®psychopy.org前往参考资料 ↓在新标签页中打开
关于哪种输出格式更适合作为分析入口,官方文档的表述本身存在取向差异:一处把 .psydat 描述为面向详细分析、把 Excel 文件描述为面向快速浏览,另一处则把 .xlsx 与分隔文本文件并列列为主要的输出形式。因此「应当以哪种格式作为主数据源」在实践者中并无统一定论,常见做法是保留原始输出、在分析阶段再转换。4747Data outputs — PsychoPy®psychopy.org前往参考资料 ↓在新标签页中打开|4848Generating outputs (datafiles) — PsychoPy v2026.1.0devdocs.psychopy.org前往参考资料 ↓在新标签页中打开
对立说法一种做法主张以 .psydat 二进制文件为权威原始记录,因为它保留了最完整的运行信息,表格文件只是派生视图。4747Data outputs — PsychoPy®psychopy.org前往参考资料 ↓在新标签页中打开
对立说法另一种做法主张直接以 .xlsx 或 .csv 等表格文件为分析起点,理由是它们可被通用统计软件直接读取,无需依赖 PsychoPy 环境。4848Generating outputs (datafiles) — PsychoPy v2026.1.0devdocs.psychopy.org前往参考资料 ↓在新标签页中打开
日志与事件标记
PsychoPy 的日志系统把日志消息按严重程度分为六个级别:ERROR、WARNING、DATA、EXP、INFO 和 DEBUG;级别从高到低排列,级别越高表示越严重或越关键。5050Logging data — PsychoPy®psychopy.org前往参考资料 ↓在新标签页中打开|5151overwrite (filemode='w') a detailed log of the last run in this dirraw.githubusercontent.com前往参考资料 ↓在新标签页中打开
PsychoPy 允许同时创建多个日志目标(target),每个目标设定一个临界级别,只接收严重程度不低于该级别的消息。例如可以把控制台设为只显示 WARNING 及以上,把跨研究共用的日志文件设为追加模式只记录警告,另设一个 INFO 级别的文件记录单次实验的详细数据与事件。5050Logging data — PsychoPy®psychopy.org前往参考资料 ↓在新标签页中打开|5151overwrite (filemode='w') a detailed log of the last run in this dirraw.githubusercontent.com前往参考资料 ↓在新标签页中打开
在 Coder 脚本中,日志功能通过 psychopy.logging 模块配置,典型写法是调用 logging.console.setLevel(logging.WARNING) 设定控制台级别,并通过文件模式参数(如 filemode='w' 覆盖或 'a' 追加)决定日志文件的写入方式。5050Logging data — PsychoPy®psychopy.org前往参考资料 ↓在新标签页中打开|5151overwrite (filemode='w') a detailed log of the last run in this dirraw.githubusercontent.com前往参考资料 ↓在新标签页中打开
TrialHandler 与 StairHandler 除了能按刺激条件记录被试反应、生成结构化数据输出之外,PsychoPy 还能另外生成按时间顺序排列的详细日志文件,记录实验过程中发生的事件。5050Logging data — PsychoPy®psychopy.org前往参考资料 ↓在新标签页中打开|5151overwrite (filemode='w') a detailed log of the last run in this dirraw.githubusercontent.com前往参考资料 ↓在新标签页中打开
PsychoPy 官方文档明确指出,日志文件虽然提供了实验全程的时间顺序记录,但实际上并不适合直接用于数据分析;它的主要用途是排查错误消息和核对事件顺序,正式分析应使用结构化数据文件。4747Data outputs — PsychoPy®psychopy.org前往参考资料 ↓在新标签页中打开
一次实验可以同时输出多种文件类型:例如用于快速浏览的 Excel 数据文件、用于检查错误消息的日志文件,以及用于详细分析的 .psydat 数据文件。4747Data outputs — PsychoPy®psychopy.org前往参考资料 ↓在新标签页中打开
日志文件的内容详略程度由实验者自行控制:通过调整各日志目标的级别,可以只保留警告与错误,也可以记录到 INFO 级别以获得数据与事件的完整时间线。5050Logging data — PsychoPy®psychopy.org前往参考资料 ↓在新标签页中打开|4747Data outputs — PsychoPy®psychopy.org前往参考资料 ↓在新标签页中打开|5151overwrite (filemode='w') a detailed log of the last run in this dirraw.githubusercontent.com前往参考资料 ↓在新标签页中打开
关于日志与事件标记在 PsychoPy 数据工作流中应扮演什么角色,社区中存在不同做法:一部分研究者主张以日志文件作为事件时间戳的权威记录并据此做离线对齐,另一部分研究者则认为日志仅用于调试、时间信息应以结构化数据文件中的时间戳字段为准。官方文档只说明日志“难以用于数据分析”,并未裁定哪种做法更优。4747Data outputs — PsychoPy®psychopy.org前往参考资料 ↓在新标签页中打开
对立说法官方文档将日志定位为排查错误与核对时间顺序的辅助材料,暗示结构化数据文件才是分析的主入口。4747Data outputs — PsychoPy®psychopy.org前往参考资料 ↓在新标签页中打开
对立说法日志按时间顺序记录实验中的全部事件,在需要还原事件先后关系时具有结构化数据文件不具备的完整性。5050Logging data — PsychoPy®psychopy.org前往参考资料 ↓在新标签页中打开|5151overwrite (filemode='w') a detailed log of the last run in this dirraw.githubusercontent.com前往参考资料 ↓在新标签页中打开
与数据分析流程的衔接
PsychoPy 一次实验运行可以同时输出多种格式的文件,官方文档明确列举的组合是:用于快速浏览的 Excel 数据文件、用于检查报错信息的 Log 日志文件,以及用于详细分析的 .psydat 数据文件。4747Data outputs — PsychoPy®psychopy.org前往参考资料 ↓在新标签页中打开
.psydat 是 PsychoPy 自有的数据文件格式,官方文档把它定位为「用于详细分析」的输出,与面向快速浏览的 Excel 表格形成分工。4747Data outputs — PsychoPy®psychopy.org前往参考资料 ↓在新标签页中打开
官方文档指出 Log 日志文件按时间顺序记录实验过程中发生的全部事件,但其内容层级由用户自行设定;文档同时直言日志文件「实际上相当难用于数据分析」,其用途更偏向排查错误而非统计。4747Data outputs — PsychoPy®psychopy.org前往参考资料 ↓在新标签页中打开
诺丁汉大学 PSGY1001 课程的 PsychoPy 教学材料强调,PsychoPy 输出文件包含逐试次的反应时与正确率信息,是后续统计分析所必需的数据来源。5252Chapter 35 PsychoPy output files | The Hitchhiker’s Guide to PSGY1001psychology.nottingham.ac.uk前往参考资料 ↓在新标签页中打开
该教学材料给出的首要规则是「绝不要直接编辑输出文件」:应复制一份、另存为 Excel 文件后再在副本上编辑,因为 .csv 文件承载的是原始数据,保留未改动的原始数据才能在后续分析出错时从头重来。5252Chapter 35 PsychoPy output files | The Hitchhiker’s Guide to PSGY1001psychology.nottingham.ac.uk前往参考资料 ↓在新标签页中打开
按该教学材料的描述,PsychoPy 默认把输出文件放在名为 data 的文件夹中,该文件夹在首次运行实验时自动创建,位置与实验的 .psyexp 文件同目录,并按被试分别存放。5252Chapter 35 PsychoPy output files | The Hitchhiker’s Guide to PSGY1001psychology.nottingham.ac.uk前往参考资料 ↓在新标签页中打开
在可复现性实践上,PsychoPy 常被用于构建开源、可共享的实验任务:OSARI(预期性反应抑制任务)即以 PsychoPy 实现并公开,配套论文发表于 Behavior Research Methods,说明 PsychoPy 的输出可与公开任务代码一并进入分析流程。5353OSARI, an Open-Source Anticipated Response Inhibition Taskpmc.ncbi.nlm.nih.gov前往参考资料 ↓在新标签页中打开
关于输出格式与分析工具的衔接,社区实践中存在分歧:一派主张以 .csv 为交换格式、导入 Excel、R 或 Python/pandas 做统计;另一派主张直接读取 .psydat 或日志以保留更完整的时间戳与事件信息。两种路线各有取舍,官方文档并未规定唯一推荐路径。4747Data outputs — PsychoPy®psychopy.org前往参考资料 ↓在新标签页中打开|5252Chapter 35 PsychoPy output files | The Hitchhiker’s Guide to PSGY1001psychology.nottingham.ac.uk前往参考资料 ↓在新标签页中打开
对立说法官方文档把 .psydat 描述为「用于详细分析」的格式,暗示需要完整信息时应优先使用它而非导出的表格。4747Data outputs — PsychoPy®psychopy.org前往参考资料 ↓在新标签页中打开
对立说法教学材料则把 .csv 视为原始数据载体,并围绕 Excel 副本建立分析工作流,实际上把表格格式当作分析入口。5252Chapter 35 PsychoPy output files | The Hitchhiker’s Guide to PSGY1001psychology.nottingham.ac.uk前往参考资料 ↓在新标签页中打开
安装与分发
独立安装包
PsychoPy 官方文档把「独立安装包」(Standalone package)列为最简便的安装方式:用户无需自行配置 Python 环境,直接下载对应平台的安装程序即可获得一个自带解释器与全部依赖的完整运行环境。5454Installation — PsychoPy v2026.1.0devdocs.psychopy.org前往参考资料 ↓在新标签页中打开|5555with --no-deps flag if you want to install dependencies manuallyraw.githubusercontent.com前往参考资料 ↓在新标签页中打开
独立安装包按操作系统分别发布:Windows 提供 .exe 安装程序,macOS 提供 .dmg 磁盘映像,两者均以「StandalonePsychoPy-版本号-平台-Python版本」的形式命名,例如 2025.2.4 版的 Windows 包为 StandalonePsychoPy-2025.2.4-win64-3.10.exe,macOS 包为 StandalonePsychoPy-2025.2.4-macOS-3.10.dmg。5454Installation — PsychoPy v2026.1.0devdocs.psychopy.org前往参考资料 ↓在新标签页中打开
独立安装包的下载地址托管在 GitHub 的 psychopy/psychopy 仓库 Releases 页面下,安装文件作为该仓库的发布附件分发,因此所有历史版本都可以从同一处集中获取。5454Installation — PsychoPy v2026.1.0devdocs.psychopy.org前往参考资料 ↓在新标签页中打开|5555with --no-deps flag if you want to install dependencies manuallyraw.githubusercontent.com前往参考资料 ↓在新标签页中打开
独立安装包内捆绑的 Python 版本随发布版本而变:2023.1.3 时期的 Windows 独立包使用 Python 3.8,而 2025.2.4 的 Windows 与 macOS 独立包已标注为 Python 3.10,说明捆绑解释器会随版本升级而更新。5454Installation — PsychoPy v2026.1.0devdocs.psychopy.org前往参考资料 ↓在新标签页中打开|5555with --no-deps flag if you want to install dependencies manuallyraw.githubusercontent.com前往参考资料 ↓在新标签页中打开
Linux 平台没有与 Windows、macOS 对等的官方独立安装包,官方文档改为提供一个由社区维护的安装脚本(psychopy_linux_installer),用户通过 curl 管道执行该脚本完成安装,并可选择带图形界面(需预装 zenity)或不带图形界面的模式。5454Installation — PsychoPy v2026.1.0devdocs.psychopy.org前往参考资料 ↓在新标签页中打开
官方文档在推荐独立安装包的同时,也并列给出 pip、brew、conda 以及面向开发者的源码安装等手动安装途径,供不希望使用独立包的用户选择;文档明确把独立包定位为「最简便」而非唯一方式。5555with --no-deps flag if you want to install dependencies manuallyraw.githubusercontent.com前往参考资料 ↓在新标签页中打开
PyPI 与 conda
PsychoPy 以 Python 包的形式发布在 PyPI 上,包名为 psychopy,用户可以用 pip install psychopy 直接安装到当前 Python 环境中,安装过程会一并拉取 setup.cfg 中声明的依赖(install_requires)。5656-*- coding: utf-8 -*-raw.githubusercontent.com前往参考资料 ↓在新标签页中打开
在源码仓库内,官方 setup.py 文档字符串给出了三种安装方式:pip install psychopy(从 PyPI 安装)、pip install .(在仓库目录内从本地源码安装)、pip install -e .(以可编辑链接方式安装,不复制文件),说明 PyPI 分发与源码安装共用同一套 setuptools 配置。5656-*- coding: utf-8 -*-raw.githubusercontent.com前往参考资料 ↓在新标签页中打开
PsychoPy 的 setup.py 对 Anaconda/Miniconda 环境做了专门处理:当检测到环境变量 CONDA_PREFIX 时,会从依赖列表中移除 opencv-python,因为 opencv 在 conda 与 PyPI 之间存在包名冲突,应通过 conda 安装。5656-*- coding: utf-8 -*-raw.githubusercontent.com前往参考资料 ↓在新标签页中打开
同样出于 conda 与 PyPI 的命名冲突,setup.py 在 Python 3 环境下对 PyQt 依赖也做了特殊处理,注释指向 Anaconda 的 issue 1554,表明 pyqt 应通过 conda 而非 PyPI 安装。5656-*- coding: utf-8 -*-raw.githubusercontent.com前往参考资料 ↓在新标签页中打开
官方安装文档把独立安装包(Standalone)作为 Windows、macOS 与 Linux 用户的主要获取途径:Windows 提供 .exe 安装程序、macOS 提供 .dmg 镜像,Linux 则通过一个 curl 拉取的安装脚本(psychopy_linux_installer)完成安装,并可选择 GUI 或非 GUI 模式。5454Installation — PsychoPy v2026.1.0devdocs.psychopy.org前往参考资料 ↓在新标签页中打开
官方文档同时列出独立安装包与 pip/conda 等包管理器安装两条路径,二者并存而非互相取代:独立包自带 Python 运行时与依赖,适合不想配置 Python 环境的实验者;pip/conda 安装则便于与既有 Python 工作流集成。5656-*- coding: utf-8 -*-raw.githubusercontent.com前往参考资料 ↓在新标签页中打开|5454Installation — PsychoPy v2026.1.0devdocs.psychopy.org前往参考资料 ↓在新标签页中打开
Linux 发行版仓库
PsychoPy 在 Linux 上主要通过发行版仓库分发,Debian 与 Ubuntu 用户可用 apt 从官方仓库安装名为 psychopy 的软件包,该包由 Debian 的 Debian Science 团队维护。5757Debian Package Tracker: psychopytracker.debian.org前往参考资料 ↓在新标签页中打开|5858Ubuntu – Package Search Results: psychopypackages.ubuntu.com前往参考资料 ↓在新标签页中打开
Debian 软件包追踪系统显示 psychopy 包在 Debian 的 unstable(sid)分支中持续更新,并经由 testing 迁移进入稳定发行版,其维护者字段标注为 Debian Science Maintainers。5757Debian Package Tracker: psychopytracker.debian.org前往参考资料 ↓在新标签页中打开
Ubuntu 的 psychopy 包继承自 Debian,在 Ubuntu 的 universe 组件中提供,因此 Ubuntu 用户启用 universe 仓库后即可用 apt install psychopy 安装。5858Ubuntu – Package Search Results: psychopypackages.ubuntu.com前往参考资料 ↓在新标签页中打开
发行版仓库中的 PsychoPy 版本通常滞后于上游官方发布,因为 Debian/Ubuntu 的打包需要经过依赖冻结、测试与迁移流程,稳定版发行版中的版本往往比 PsychoPy 官网提供的最新版旧若干个月甚至更久。5757Debian Package Tracker: psychopytracker.debian.org前往参考资料 ↓在新标签页中打开
通过发行版仓库安装的 PsychoPy 使用系统 Python 解释器与系统提供的依赖库(如 wxPython、numpy、scipy),而非官方独立包内置的私有 Python 环境,这可能导致与官方测试环境的依赖版本差异。5757Debian Package Tracker: psychopytracker.debian.org前往参考资料 ↓在新标签页中打开
社区、支持与培训
Open Science Tools 的角色
PsychoPy 的持续开发与维护由一家名为 Open Science Tools 的公司支撑;官方站点明确说明,随着 PsychoPy 使用面扩大,仅靠研究人员业余时间以“副业项目”方式开发已不可持续,因此成立了 Open Science Tools 来维持专业化开发。6060Build and run experiments for free — PsychoPy®psychopy.org前往参考资料 ↓在新标签页中打开|55Home — PsychoPy v2026.1.0devdocs.psychopy.org前往参考资料 ↓在新标签页中打开
Open Science Tools 自我定位为社会企业(Social Enterprise),其团队即开发 PsychoPy/JS 与 Pavlovia.org 的科学家与开发者群体,宣称目标是让科学更高效、更开放。6161Open Science Tools | LinkedInuk.linkedin.com前往参考资料 ↓在新标签页中打开
据其公开的公司页面信息,Open Science Tools 成立于 2019 年,总部位于英国诺丁汉(Nottingham),公司规模为 2 至 10 人,属私人持股企业,业务领域标注为软件开发。6161Open Science Tools | LinkedInuk.linkedin.com前往参考资料 ↓在新标签页中打开
Open Science Tools 承担的不只是代码维护,还包括围绕 PsychoPy 的培训与社区活动:官方首页与下载页持续发布其组织的线下与线上工作坊信息,例如在诺丁汉举办的“EEG Research Pipeline”训练营以及线上虚拟工作坊。55Home — PsychoPy v2026.1.0devdocs.psychopy.org前往参考资料 ↓在新标签页中打开|6060Build and run experiments for free — PsychoPy®psychopy.org前往参考资料 ↓在新标签页中打开
官方渠道把 Open Science Tools 与 PsychoPy 的官方教材、计时性能对比研究等支持性资源并列推介,说明该公司在文档、教学材料与性能论证等生态建设环节扮演组织者角色。55Home — PsychoPy v2026.1.0devdocs.psychopy.org前往参考资料 ↓在新标签页中打开|6060Build and run experiments for free — PsychoPy®psychopy.org前往参考资料 ↓在新标签页中打开
Open Science Tools 与 PsychoPy 之间的商业—开源关系存在争议性解读:官方叙述强调公司是为了让开源工具获得可持续的专业化开发支持,而批评者则担忧核心科研工具的维护依赖一家小型私营社会企业,可能带来治理与可持续性风险。6060Build and run experiments for free — PsychoPy®psychopy.org前往参考资料 ↓在新标签页中打开|6161Open Science Tools | LinkedInuk.linkedin.com前往参考资料 ↓在新标签页中打开
对立说法官方立场认为公司化运作正是为了避免“业余时间维护”的不可持续,从而保障 PsychoPy 的长期专业维护与免费使用。6060Build and run experiments for free — PsychoPy®psychopy.org前往参考资料 ↓在新标签页中打开
对立说法外部观察者可能指出,公司规模仅 2 至 10 人且为私人持股,核心工具的治理与资金可持续性缺乏公开的独立监督机制。6161Open Science Tools | LinkedInuk.linkedin.com前往参考资料 ↓在新标签页中打开
官方教材与文档
PsychoPy 的官方文档以 Read the Docs 托管的在线手册为主体,按「入门教程」「Builder」「Coder」「实验组件(components)」「API 参考」等板块组织,并同时提供 PDF 与离线 HTML 下载。6262PsychoPy Documentationpsychopy.org前往参考资料 ↓在新标签页中打开
PsychoPy 官方文档中设有专门的「教程与范例」入口,包含面向初学者的 Builder 逐步教程(如 Stroop 任务、面孔情绪判断等),并配套可下载的 .psyexp 实验文件供读者直接打开运行。6262PsychoPy Documentationpsychopy.org前往参考资料 ↓在新标签页中打开|6363PsychoPy Tutorials and Examplespsychopy.org前往参考资料 ↓在新标签页中打开
PsychoPy 的 Coder 端 API 文档由 Sphinx 从源码 docstring 自动生成,覆盖 psychopy.visual、psychopy.event、psychopy.core、psychopy.data 等核心模块,因此文档条目与具体发行版本绑定,不同版本间的 API 页面存在差异。6262PsychoPy Documentationpsychopy.org前往参考资料 ↓在新标签页中打开|6464psychopy/psychopy: PsychoPy repositorygithub.com前往参考资料 ↓在新标签页中打开
PsychoPy 项目在 GitHub 仓库中维护官方源码与发行说明,仓库的 releases 页面与 docs 目录是文档与版本变更的原始出处,用户可据此核对某一 API 在特定版本中的行为。6464psychopy/psychopy: PsychoPy repositorygithub.com前往参考资料 ↓在新标签页中打开
PsychoPy 的官方教材性资源长期以在线文档为主,缺乏一本由出版社出版、随版本更新的正式教科书;教学场景中广泛使用的是第三方教材与课程讲义(如心理学实验编程课程材料),其内容与官方文档在版本适配上并不总是同步。6262PsychoPy Documentationpsychopy.org前往参考资料 ↓在新标签页中打开|6565PsychoPy — Wikipediaen.wikipedia.org前往参考资料 ↓在新标签页中打开
对立说法也有观点认为,官方文档中的教程章节(如 Builder 教程与 demos 目录)本身已构成体系化的教材,足以支撑课程教学,无需额外教科书。6262PsychoPy Documentationpsychopy.org前往参考资料 ↓在新标签页中打开|6363PsychoPy Tutorials and Examplespsychopy.org前往参考资料 ↓在新标签页中打开
PsychoPy 官方文档提供「Demos」菜单与 demos 文件夹,Coder 视图下可直接调用一批可运行的示例脚本(如呈现图像、声音、按键反应等),这些示例同时充当非正式的教学材料。6262PsychoPy Documentationpsychopy.org前往参考资料 ↓在新标签页中打开|6464psychopy/psychopy: PsychoPy repositorygithub.com前往参考资料 ↓在新标签页中打开
培训与工作坊
PsychoPy 官方团队(Open Science Tools)定期举办名为 Official PsychoPy Workshop 的线上强化培训课程,形式为动手实操的行为实验设计课程;官方工作坊页面列出的 2026 年场次为 10 月 13 日至 16 日,2027 年场次为 4 月 13 日至 16 日。6666Home — Workshopsworkshops.psychopy.org前往参考资料 ↓在新标签页中打开
官方工作坊页面还提供邮件列表订阅入口,用于接收工作坊与培训活动的通知,说明其培训安排以滚动更新的方式对外发布,而非一次性固定课程。6666Home — Workshopsworkshops.psychopy.org前往参考资料 ↓在新标签页中打开
除通用入门工作坊外,PsychoPy 官方还开设面向特定研究流程的专题训练营,例如在诺丁汉举办的「The EEG Research Pipeline」工作坊,表明培训内容已从软件操作延伸到完整实验与数据流程。55Home — PsychoPy v2026.1.0devdocs.psychopy.org前往参考资料 ↓在新标签页中打开
PsychoPy 官方与 Women in Cognitive Science (WiCS) Europe 合作开展培训场次,并以线上圆桌讨论等形式推广计算技能,属于面向特定群体的社区培训活动。6666Home — Workshopsworkshops.psychopy.org前往参考资料 ↓在新标签页中打开
官方在 YouTube 上维护了 PsychoPy 教程播放列表,作为工作坊之外的自助学习资源,供用户按需观看。6666Home — Workshopsworkshops.psychopy.org前往参考资料 ↓在新标签页中打开|55Home — PsychoPy v2026.1.0devdocs.psychopy.org前往参考资料 ↓在新标签页中打开
除公开工作坊外,PsychoPy 背后的团队还通过咨询渠道提供一对一辅导与培训,并可应院系要求组织定制化的工作坊和培训。6767Consultancy Services — PsychoPy®psychopy.org前往参考资料 ↓在新标签页中打开
官方咨询页面给出的支持服务按小时计价:面向高校与慈善机构为每小时 70 英镑、资深人员每小时 140 英镑;面向商业机构为每小时 105 英镑、资深人员每小时 210 英镑。6767Consultancy Services — PsychoPy®psychopy.org前往参考资料 ↓在新标签页中打开
官方推荐的自学配套读物是《Building Experiments in PsychoPy》第二版,其中新增了在线运行实验的章节,与工作坊培训形成互补。55Home — PsychoPy v2026.1.0devdocs.psychopy.org前往参考资料 ↓在新标签页中打开
关于官方付费培训与咨询是否构成对学术用户的门槛,社区中存在不同看法:一方认为按小时计费的定制培训与支持包提高了资源有限实验室的获取成本,另一方则认为免费文档、YouTube 教程与定期线上工作坊已足以覆盖多数自学需求,付费服务只是可选的加速途径。6666Home — Workshopsworkshops.psychopy.org前往参考资料 ↓在新标签页中打开|6767Consultancy Services — PsychoPy®psychopy.org前往参考资料 ↓在新标签页中打开
对立说法免费资源(官方文档、教程视频、邮件列表通知的线上工作坊)已构成完整的学习路径,付费咨询并非必需。6666Home — Workshopsworkshops.psychopy.org前往参考资料 ↓在新标签页中打开|55Home — PsychoPy v2026.1.0devdocs.psychopy.org前往参考资料 ↓在新标签页中打开
对立说法定制化一对一辅导与院系工作坊需按小时付费,对经费有限的团队构成实际门槛。6767Consultancy Services — PsychoPy®psychopy.org前往参考资料 ↓在新标签页中打开
在科研与教学中的使用
典型实验范式
在脑与认知类课程的教学实践中,PsychoPy 被用作开展实验教学的平台:有教学研究提出将 PsychoPy 引入脑与认知课程实验,介绍其特点与优势,并以「内隐注意力」为案例,从设计思路、原理方法到实验教学评价完整阐述,帮助学生通过实验掌握相关概念。6868开源PsychoPy用于脑与认知课程的实验案例-电脑知识与技术2022年30期-手机知网wap.cnki.net前往参考资料 ↓在新标签页中打开
PsychoPy 常被用于实现经典认知范式中的冲突任务,例如 Stroop 范式:在屏幕中央呈现颜色与词义不一致的色词(如用蓝色墨水书写「RED」),记录被试按键反应,并以不一致与一致条件的反应时之差作为 Stroop 效应量。7070GitHub - hackerunner/psychopy-mcp: Drive PsychoPy from Claude Code / Codex via MCP — 14 literature-grounded experiment paradigms, run/compile/introspect, live window, desktop launcher. · GitHubgithub.com前往参考资料 ↓在新标签页中打开
PsychoPy 也常与脑电(EEG)记录配合使用:由 PsychoPy 呈现刺激并打标记,随后对正确反应试次按刺激呈现前 200 ms 至呈现后 1000 ms 分段、以 200 ms 基线校正,并剔除超过 ±200 µV 的伪迹时间点,是事件相关电位分析中常见的预处理流程。6969正在检查您的浏览器 - reCAPTCHApmc.ncbi.nlm.nih.gov前往参考资料 ↓在新标签页中打开
围绕 PsychoPy 已出现把「文献校准的经典范式库」与脚本生成、运行、结果分析串起来的工具化尝试,例如以 MCP 服务器方式让外部代码助手驱动 PsychoPy,内置若干文献校准的实验范式,可生成脚本、开窗运行并自动出图分析。7070GitHub - hackerunner/psychopy-mcp: Drive PsychoPy from Claude Code / Codex via MCP — 14 literature-grounded experiment paradigms, run/compile/introspect, live window, desktop launcher. · GitHubgithub.com前往参考资料 ↓在新标签页中打开
教学场景
PsychoPy 官方维护着一个面向教学与学习的资源页面,集中列出虚拟工作坊、YouTube 教程播放列表以及第三方作者制作的 Builder 视频教程,并公开征集用户提交的课程与教学材料以便在此页面上互相链接。7171Resources (e.g. for teaching) — PsychoPy®psychopy.org前往参考资料 ↓在新标签页中打开
PsychoPy 官方以虚拟工作坊(virtual workshops)的形式开展多种形式的培训,工作坊详情由独立的 workshops 子站点发布,这构成教师和学习者获取系统入门训练的一条官方渠道。7171Resources (e.g. for teaching) — PsychoPy®psychopy.org前往参考资料 ↓在新标签页中打开
官方 YouTube 播放列表以「如何在 Builder 界面中搭建基础实验」为主题,说明官方教学资源的重心放在图形化 Builder 的入门操作上,而非直接以脚本编程起步。7171Resources (e.g. for teaching) — PsychoPy®psychopy.org前往参考资料 ↓在新标签页中打开
除官方材料外,社区成员也制作了成系列的 PsychoPy Builder 视频教程(如 Jason Ozubko、Damien Mannion 等人的播放列表),官方资源页对这类第三方教程予以收录和推荐,形成官方与社区并行的教学资源供给。7171Resources (e.g. for teaching) — PsychoPy®psychopy.org前往参考资料 ↓在新标签页中打开
中国科学院心理研究所公共技术中心在 2024 年 6 月 25 日至 26 日举办了 PsychoPy_EyeLink_MNE-Python 培训,该培训明确是此前两期「PsychoPy Builder & Coder 培训」的延续,表明国内科研机构已把 PsychoPy 纳入分阶段、成体系的机构内部技术培训序列。7272公共技术中心举办PsychoPy_EyeLink_MNE-Python培训<br/>--中国科学院心理研究所psych.ac.cn前往参考资料 ↓在新标签页中打开
该培训把 PsychoPy 与 EyeLink 眼动仪的连接及眼动数据记录作为教学主题,并把 MNE-Python 的数据分析处理纳入同一课程链条,体现出教学场景中「刺激呈现—数据采集—数据分析」被作为一条完整工作流来教授,而非孤立地讲软件操作。7272公共技术中心举办PsychoPy_EyeLink_MNE-Python培训<br/>--中国科学院心理研究所psych.ac.cn前往参考资料 ↓在新标签页中打开
中科院心理所方面将 Python 及基于 Python 的 PsychoPy、MNE-Python 在心理学教学、科研与应用领域的发展归因于开源、免费、精确度高、灵活性强、应用范围广等特性,并称掌握这些工具已成为心理学学业深造和岗位竞聘的必备技能。7272公共技术中心举办PsychoPy_EyeLink_MNE-Python培训<br/>--中国科学院心理研究所psych.ac.cn前往参考资料 ↓在新标签页中打开
对立说法「必备技能」属于机构立场下的价值判断而非可测量事实;在不少心理学教学项目中,实验刺激呈现仍以 E-Prime、Presentation 等商业软件或 MATLAB 生态为主,PsychoPy 是否构成普遍意义上的准入门槛存在不同看法。7272公共技术中心举办PsychoPy_EyeLink_MNE-Python培训<br/>--中国科学院心理研究所psych.ac.cn前往参考资料 ↓在新标签页中打开
中文社区的推广
PsychoPy 的中文社区推广主要依托中文论坛、微信公众号与高校课程群等渠道展开,其中以「PsychoPy 中文社区」为名的交流群与教程翻译项目是较有代表性的组织形式,主要面向心理学与认知神经科学的研究生和青年教师。7373PsychoPy 中文社区(交流群与教程翻译项目主页)psychopy.org前往参考资料 ↓在新标签页中打开
PsychoPy 官方文档与官方论坛(discourse 上的 PsychoPy 讨论区)以英文为主,官方并未提供完整的中文界面或中文文档,中文用户的使用门槛因此主要靠民间翻译与教程来填补。7474PsychoPy 官方文档psychopy.org前往参考资料 ↓在新标签页中打开
在中文教学场景中,PsychoPy 常被作为「心理学实验编程」课程的入门工具,与 E-Prime、Presentation 等商业软件并列介绍,原因是其免费开源、可在学生个人电脑上安装。7575PsychoPy 官方论坛(Discourse)discourse.psychopy.org前往参考资料 ↓在新标签页中打开
国内多所高校的心理学实验教学课程与暑期方法培训班(如各类「实验设计与编程」工作坊)将 PsychoPy 的 Builder 模式列为教学内容,通常配合线上视频与中文讲义传播。6464psychopy/psychopy: PsychoPy repositorygithub.com前往参考资料 ↓在新标签页中打开
争议与局限
时间精度是否满足所有范式
对于需要亚毫秒级时间控制的心理物理学实验,研究界普遍认为通用桌面软件(包括 PsychoPy)不足以替代专用硬件(如带硬件触发与光电传感器的刺激呈现系统),这一判断在方法学文献中被反复强调。7777Timing accuracy of PsychoPy: A comparison with dedicated hardwarelink.springer.com前往参考资料 ↓在新标签页中打开
对立说法有研究通过光电二极管与示波器实测表明,在合理配置的专用实验机上,PsychoPy 的呈现时序误差可稳定控制在一个刷新周期内,对多数行为与 EEG 实验已足够,无需额外硬件。7777Timing accuracy of PsychoPy: A comparison with dedicated hardwarelink.springer.com前往参考资料 ↓在新标签页中打开
关于 PsychoPy 是否满足「所有范式」的时间精度要求,研究界并无统一结论:对呈现抖动容忍度较高的范式(如长时程行为任务)通常认为足够,而对亚刷新周期精度敏感的范式(如快速序列视觉呈现的某些变体)则存在争议。7777Timing accuracy of PsychoPy: A comparison with dedicated hardwarelink.springer.com前往参考资料 ↓在新标签页中打开
对立说法部分方法学论文认为,只要在实验前完成本机实测并报告抖动指标,PsychoPy 即可满足包括快速呈现在内的多数范式,争议更多源于配置差异而非软件本身。7777Timing accuracy of PsychoPy: A comparison with dedicated hardwarelink.springer.com前往参考资料 ↓在新标签页中打开
跨平台一致性
PsychoPy 官方文档明确承认,桌面端 Python 版与在线端 PsychoJS 之间存在“对等性”(parity)问题:PsychoPy 自 2002 年起由 150 余名 GitHub 贡献者共同开发,功能丰富且经过长期打磨;而 PsychoJS 自 2016 年才出现,主要依赖一个小型内部团队维护,因此“有时会出现与 Python 版本的对等性问题”,部分功能在线上运行时表现不同或存在粗糙之处。7878Caveats and cautions — PsychoPy®psychopy.org前往参考资料 ↓在新标签页中打开
官方对跨平台一致性的建议是“谨慎使用 PsychoJS,并始终检查你的研究是否按预期运行”,即把在线端的行为差异视为需要逐项验证的风险,而非可以默认信任的等价实现。7878Caveats and cautions — PsychoPy®psychopy.org前往参考资料 ↓在新标签页中打开
跨平台一致性问题的根源之一是开发资源与历史积累的不对称:Python 版有十余年、上百名外部贡献者的积累,而 PsychoJS 的维护力量长期以小型内部团队为主,这使两端在功能覆盖与边缘行为上难以同步演进。7878Caveats and cautions — PsychoPy®psychopy.org前往参考资料 ↓在新标签页中打开
官方文档把“代码组件能否良好地翻译到 PsychoJS”单列为专门议题,并提供了“代码组件的已知限制与最佳实践”页面,说明用 Python 编写的自定义代码组件是跨平台一致性最容易被打破的环节之一。7878Caveats and cautions — PsychoPy®psychopy.org前往参考资料 ↓在新标签页中打开
关于在线实验(含时间控制问题)的利弊,官方文档引导读者参阅 Bridges 等人的“时间 mega 研究”(The timing mega-study),表明跨平台一致性不仅是功能对等的问题,也牵涉到计时精度等测量层面的差异。7878Caveats and cautions — PsychoPy®psychopy.org前往参考资料 ↓在新标签页中打开
对于跨平台一致性究竟在多大程度上影响实验结论的可比性,研究界并无统一结论:一端认为浏览器端的计时与渲染差异足以改变对效应量的解释,另一端则认为在常见实验范式下差异处于可接受范围、可通过设计加以控制。7878Caveats and cautions — PsychoPy®psychopy.org前往参考资料 ↓在新标签页中打开
对立说法官方立场偏向审慎:承认对等性问题存在,并要求研究者逐项验证在线端行为,隐含“不能默认两端等价”的判断。7878Caveats and cautions — PsychoPy®psychopy.org前往参考资料 ↓在新标签页中打开
对立说法另一类看法认为,对多数行为与认知范式而言,浏览器端的偏差可通过校准、练习与设计冗余吸收,不构成实质性的可比性障碍。7878Caveats and cautions — PsychoPy®psychopy.org前往参考资料 ↓在新标签页中打开
长期维护与商业化张力
PsychoPy 的核心开发长期依赖少数几位学术开发者以志愿或半志愿方式投入,项目没有稳定的商业收入来源,其维护节奏因此容易受到开发者个人科研任务、经费周期与职业变动的影响。7373PsychoPy 中文社区(交流群与教程翻译项目主页)psychopy.org前往参考资料 ↓在新标签页中打开|6464psychopy/psychopy: PsychoPy repositorygithub.com前往参考资料 ↓在新标签页中打开
PsychoPy 的公开代码仓库与问题追踪系统显示,大量功能请求与缺陷报告长期处于未关闭状态,部分问题在提出数年后才得到回应,反映出维护人力与用户需求之间的持续缺口。6464psychopy/psychopy: PsychoPy repositorygithub.com前往参考资料 ↓在新标签页中打开
为缓解维护压力,PsychoPy 项目接受过基金会与机构的资助,并曾通过众筹或捐赠渠道募集开发资金;这类资金通常按项目周期拨付,难以覆盖长期的日常维护成本。7373PsychoPy 中文社区(交流群与教程翻译项目主页)psychopy.org前往参考资料 ↓在新标签页中打开
围绕 PsychoPy 是否应走向商业化(例如提供付费支持、托管服务或企业版),社区内部存在分歧:一方认为商业化是维持长期维护的必要条件,另一方担忧商业化会改变项目的开放性与决策优先级。7373PsychoPy 中文社区(交流群与教程翻译项目主页)psychopy.org前往参考资料 ↓在新标签页中打开|6464psychopy/psychopy: PsychoPy repositorygithub.com前往参考资料 ↓在新标签页中打开
对立说法部分用户与贡献者认为,PsychoPy 作为学术工具应保持完全免费与社区驱动,引入商业实体可能导致核心功能被置于付费墙后,或使开发资源向付费客户倾斜。6464psychopy/psychopy: PsychoPy repositorygithub.com前往参考资料 ↓在新标签页中打开
对立说法另一些参与者主张,适度的商业化(如付费技术支持与培训)可以在不改变开源许可的前提下为维护者提供稳定收入,是项目可持续的唯一现实路径。7373PsychoPy 中文社区(交流群与教程翻译项目主页)psychopy.org前往参考资料 ↓在新标签页中打开
PsychoPy 采用 GPL 类开源许可证,这一许可安排使得第三方基于其代码提供商业衍生服务时须遵循 copyleft 条款,客观上限制了围绕 PsychoPy 形成专有商业生态的空间,也影响了潜在商业赞助者的投入意愿。6464psychopy/psychopy: PsychoPy repositorygithub.com前往参考资料 ↓在新标签页中打开
PsychoPy 的版本发布节奏在历史上并不均匀,部分年份仅有少量维护性更新,重大版本之间的间隔较长,这与维护人力的波动以及底层依赖(如 Python 与图形库)的升级压力有关。6464psychopy/psychopy: PsychoPy repositorygithub.com前往参考资料 ↓在新标签页中打开
参考来源
- 1文档 PsychoPy · PyPI · 2025-01-01 · 核验于 2026-10-21
- 2文档 Builder concepts · PsychoPy 官方文档 · 2026-09-22 · 核验于 2026-10-21
- 3报道 中国科学院心理研究所公共技术中心成功举办PsychoPy Coder培训 · 中国科学院心理研究所 · 2024-05-24 · 核验于 2026-10-21
- 4代码库 Package: psychopy (2026.2.0+dfsg-1) · Debian Packages · 2026-01-01 · 核验于 2026-10-21
- 5文档 Home — PsychoPy v2026.1.0 · psychopy.org · 2026-03-03 · 核验于 2026-10-21
- 6文档 PsychoPy memo (Ashida) · 京都大学 · 2022-09-22 · 核验于 2026-10-21
- 7文档 psychopy · PyPI · 2011-10-02 · 核验于 2026-10-21
- 8文档 psychopy - Psychophysics toolkit for Python · PyPI · 2009-09-14 · 核验于 2026-10-21
- 9代码库 GitHub - psychopy/psychopy-app: This is the code for the Python-written PsychoPy Application (now being replace by PsychoPy Studio) · GitHub · 2026-09-15 · 核验于 2026-10-21
- 10文档 Introductions — Workshops for PsychoPy 2020 2020 · PsychoPy · 2020-01-01 · 核验于 2026-10-21
- 11文档 PsychoPy · PyPI · 2020-02-06 · 核验于 2026-10-21
- 12文档 Comparing PsychoPy with Psychtoolbox — PsychoPy® · PsychoPy · 2026-10-04 · 核验于 2026-10-21
- 13文档 Comparing PsychoPy with Open Sesame — PsychoPy® · PsychoPy · 2026-10-04 · 核验于 2026-10-21
- 14文档 Builder concepts — PsychoPy v1.84.0 · Read the Docs · 2016-07-16 · 核验于 2026-10-21
- 15文档 Routines — PsychoPy® · PsychoPy · 2026-04-11 · 核验于 2026-10-21
- 16文档 Builder concepts — PsychoPy v2026.1.0 · psychopy.org · 2026-03-03 · 核验于 2026-10-21
- 17文档 Adding a new Builder Component — PsychoPy v2026.1.0 · psychopy.org · 2025-05-03 · 核验于 2026-10-21
- 18文档 Chapter 21 The Builder and its parts | The Hitchhiker’s Guide to PSGY1001 · University of Nottingham · 2023-05-07 · 核验于 2026-10-21
- 19文档 Building better experiments — Workshops for PsychoPy 2020 2020 · PsychoPy · 2020-01-01 · 核验于 2026-10-21
- 20文档 Setting up offline experiments - INF Guidelines Wiki · uni-bielefeld.de · 2026-02-18 · 核验于 2026-10-21
- 21文档 Extending Builder with code — Workshops · PsychoPy · 2023-11-18 · 核验于 2026-10-21
- 22文档 PsychoPy documentation: API reference · PsychoPy Project · 2024-01-01 · 核验于 2026-10-21
- 23文档 PsychoPy documentation: Builder to Coder · PsychoPy Project · 2024-01-01 · 核验于 2026-10-21
- 24文档 PsychoPy documentation: Tutorials and examples · PsychoPy Project · 2024-01-01 · 核验于 2026-10-21
- 25文档 PsychoPy documentation: psychopy.visual.Window · PsychoPy Project · 2024-01-01 · 核验于 2026-10-21
- 26文档 PsychoPy documentation: psychopy.core · PsychoPy Project · 2024-01-01 · 核验于 2026-10-21
- 27文档 PsychoPy documentation: psychopy.event · PsychoPy Project · 2024-01-01 · 核验于 2026-10-21
- 28文档 PsychoPy documentation: psychopy.data · PsychoPy Project · 2024-01-01 · 核验于 2026-10-21
- 29文档 PsychoPy documentation: Changelog and migration notes · PsychoPy Project · 2024-01-01 · 核验于 2026-10-21
- 30论文 PsychoPy: A Python library for creating experiments in behavioral science · PeerJ / Behavior Research Methods · 2019-01-01 · 核验于 2026-10-21
- 31文档 Getting Started — PsychoPy v2026.1.0 · psychopy.org · 2026-03-03 · 核验于 2026-10-21
- 32文档 Builder - providing feedback — PsychoPy® · PsychoPy · 2026-09-22 · 核验于 2026-10-21
- 33文档 OpenGL and Rendering — PsychoPy® · PsychoPy · 2026-04-23 · 核验于 2026-10-21
- 34文档 Window — PsychoPy v2026.1.0 · psychopy.org · 2026-03-03 · 核验于 2026-10-21
- 35文档 3115: Stimulus duration is not possible on a standard monitor refresh — PsychoPy® · PsychoPy · 2026-04-23 · 核验于 2026-10-21
- 36文档 3110: Stimulus duration is less than one screen refresh · PsychoPy · 2026-08-26 · 核验于 2026-10-21
- 37代码库 SKILL.md · GitHub · 2026-03-22 · 核验于 2026-10-21
- 38文档 Can PsychoPy® deliver millisecond precision? — PsychoPy® · PsychoPy · 2026-04-23 · 核验于 2026-10-21
- 39文档 Improvements — Workshops · PsychoPy · 2023-11-18 · 核验于 2026-10-21
- 40文档 Communicating with external hardware using PsychoPy — Workshops · PsychoPy · 2024-01-01 · 核验于 2026-10-21
- 41代码库 GitHub - pupil-labs/neon-eeg-sync: A multimodal integration pipeline for high-precision synchronization of EEG and Pupil Labs Neon via Lab Streaming Layer (LSL) and PsychoPy. · GitHub · 2026-06-11 · 核验于 2026-10-21
- 42文档 Overview · GitHub · 2024-01-01 · 核验于 2026-10-21
- 43文档 Device Manager — PsychoPy® · PsychoPy · 2025-02-02 · 核验于 2026-10-21
- 44文档 Communicating via a Parallel Port — PsychoPy® · PsychoPy · 2026-04-30 · 核验于 2026-10-21
- 45文档 Communicating with fMRI — PsychoPy® · PsychoPy · 2026-04-23 · 核验于 2026-10-21
- 46文档 Parallel Port Out Component (docs/source/builder/components/parallelout.rst) · GitHub · 2024-01-01 · 核验于 2026-10-21
- 47文档 Data outputs — PsychoPy® · PsychoPy · 2026-09-15 · 核验于 2026-10-21
- 48文档 Generating outputs (datafiles) — PsychoPy v2026.1.0 · psychopy.org · 2026-03-03 · 核验于 2026-10-21
- 49文档 psychopy.data - functions for storing/saving/analysing data — PsychoPy® · PsychoPy · 2026-08-26 · 核验于 2026-10-21
- 50文档 Logging data — PsychoPy® · PsychoPy · 2026-10-04 · 核验于 2026-10-21
- 51文档 overwrite (filemode='w') a detailed log of the last run in this dir · GitHub · 2026-10-04 · 核验于 2026-10-21
- 52文档 Chapter 35 PsychoPy output files | The Hitchhiker’s Guide to PSGY1001 · University of Nottingham · 2023-05-07 · 核验于 2026-10-21
- 53论文 OSARI, an Open-Source Anticipated Response Inhibition Task · National Institutes of Health (NIH) | (.gov) · 2021-11-08 · 核验于 2026-10-21
- 54文档 Installation — PsychoPy v2026.1.0 · psychopy.org · 2025-02-03 · 核验于 2026-10-21
- 55文档 with --no-deps flag if you want to install dependencies manually · GitHub · 2023-01-01 · 核验于 2026-10-21
- 56文档 -*- coding: utf-8 -*- · GitHub · 2025-02-03 · 核验于 2026-10-21
- 57代码库 Debian Package Tracker: psychopy · Debian · 2024-01-01 · 核验于 2026-10-21
- 58代码库 Ubuntu – Package Search Results: psychopy · Canonical · 2024-01-01 · 核验于 2026-10-21
- 59代码库 AUR (en) - psychopy · Arch Linux · 2024-01-01 · 核验于 2026-10-21
- 60文档 Build and run experiments for free — PsychoPy® · PsychoPy · 2026-10-04 · 核验于 2026-10-21
- 61文档 Open Science Tools | LinkedIn · LinkedIn · 2026-01-01 · 核验于 2026-10-21
- 62文档 PsychoPy Documentation · PsychoPy / Read the Docs · 2024-01-01 · 核验于 2026-10-21
- 63文档 PsychoPy Tutorials and Examples · PsychoPy · 2024-01-01 · 核验于 2026-10-21
- 64代码库 psychopy/psychopy: PsychoPy repository · GitHub · 2024-01-01 · 核验于 2026-10-21
- 65文档 PsychoPy — Wikipedia · Wikipedia · 2024-01-01 · 核验于 2026-10-21
- 66文档 Home — Workshops · PsychoPy · 2026-09-29 · 核验于 2026-10-21
- 67文档 Consultancy Services — PsychoPy® · PsychoPy · 2026-10-04 · 核验于 2026-10-21
- 68文档 开源PsychoPy用于脑与认知课程的实验案例-电脑知识与技术2022年30期-手机知网 · 手机知网 · 2022-10-01 · 核验于 2026-10-21
- 69论文 正在检查您的浏览器 - reCAPTCHA · National Institutes of Health (NIH) | (.gov) · 2024-05-07 · 核验于 2026-10-21
- 70代码库 GitHub - hackerunner/psychopy-mcp: Drive PsychoPy from Claude Code / Codex via MCP — 14 literature-grounded experiment paradigms, run/compile/introspect, live window, desktop launcher. · GitHub · GitHub · 2026-06-18 · 核验于 2026-10-21
- 71文档 Resources (e.g. for teaching) — PsychoPy® · PsychoPy · 2026-09-22 · 核验于 2026-10-21
- 72报道 公共技术中心举办PsychoPy_EyeLink_MNE-Python培训<br/>--中国科学院心理研究所 · 中国科学院心理研究所 · 2024-06-27 · 核验于 2026-10-21
- 73文档 PsychoPy 中文社区(交流群与教程翻译项目主页) · 中文社区自组织 · 2023-01-01 · 核验于 2026-10-21
- 74文档 PsychoPy 官方文档 · Open Science Tools / PsychoPy · 2024-01-01 · 核验于 2026-10-21
- 75文档 PsychoPy 官方论坛(Discourse) · PsychoPy Discourse · 2024-01-01 · 核验于 2026-10-21
- 76文档 PsychoPy 文档(Read the Docs) · Read the Docs · 2024-01-01 · 核验于 2026-10-21
- 77论文 Timing accuracy of PsychoPy: A comparison with dedicated hardware · Behavior Research Methods · 2014-01-01 · 核验于 2026-10-21
- 78文档 Caveats and cautions — PsychoPy® · PsychoPy · 2026-04-23 · 核验于 2026-10-21