脚本与安全

在 blend 文档中包含 Python 脚本的能力对于绑定和自动化等高级任务很有价值。但是,它带来了安全风险,因为 Python 不会限制脚本可以执行的操作。因此,只应运行来自您知道和信任的源的脚本。默认情况下禁用自动执行;但是,某些 blend 文档需要此功能才能正常运行。

当 blend 文件试图运行脚本并且未被允许,标题栏将显示信息,并提供 允许执行 或者 忽略 该脚本的选项。

../../_images/advanced_scripting_security_autorun-scripts-dialog.png

信息编辑器标题栏显示的自动运行警告。

Blend 文件中的脚本

自动运行

下面是一些 blend 文件可能自动运行脚本的方式。

注册的文本块

文本数据块可以启用 注册 选项,这意味会在启动时自动加载。

动画驱动

Python 表达式可以用于 驱动 值,并且经常在进阶的绑定和动画中使用。

手动运行

还有一些情况下,blend 文件需要用户交互才能运行脚本(因此禁用自动运行也会运行),但你需要清楚这种情形,因为它不是那么显而易见。

  • 在文本编辑器中运行脚本。

  • 使用 Freestyle 渲染,由于 Freestyle 使用脚本控制线条样式。

控制脚本运行

Blender 提供了一些用于控制是否允许 blend 文件中脚本自动运行的方法。

首先,文件浏览器具有 受信任源 选项,您可以根据具体情况使用该选项来控制自动执行。由于您可能会忘记设置此选项,或者可能不通过 “文件浏览器” 打开文件,因此您可以更改默认值(如下所述)。

设置默认值

在偏好设置中,可切换到自动运行 Python 脚本。这意味着默认情况下将启用文件浏览器中的 受信任源 选项,并且脚本可以在未使用文件浏览器加载 blend 文件时运行。启用后,您可以选择排除某些目录;典型的配置是信任除下载目录外的所有路径。

../../_images/animation_drivers_troubleshooting_autorun-user-preference.png

自动运行 Python 脚本。

命令行

您可能希望从命令行执行批处理渲染或其他一些任务,在没有界面的情况下运行 Blender。在这种情况下,首选项仍在使用,但您可能希望覆盖它们:

  • 使用 -y--enable-autoexec 启用

  • 使用 -Y--disable-autoexec 禁用

例子

要在后台模式下渲染动画,允许驱动进程和其他脚本运行,请执行以下操作:

blender --background --enable-autoexec my_movie.blend --render-anim

Note

命令行参数也可以用来正常启动 Blender,并且覆盖用户设置。