Mac终端怎么运行Python脚本:Python3命令与执行权限详解

山间有风
山间有风
发布时间:2026-10-24| 3人浏览过
原创

在 macOS 系统中,终端运行 Python 脚本主要有两种标准途径:一种是显式调用解释器,通过 python3 脚本路径 命令直接执行;另一种是为脚本头部添加声明解释器路径的 Shebang 行,配合 chmod +x 赋予可执行权限后,直接通过 ./脚本名.py 运行。前者适合快速调试与日常开发,后者则常用于打造可直接调用的命令行自动化工具。本文将围绕这两种运行方式的操作步骤、系统底层权限机制以及常见报错场景展开完整讲解。

一、基础准备:确认 macOS 的 Python 3 环境

在现代 macOS 系统(特别是 macOS Monterey 12.3 及更新版本)中,苹果已经彻底移除了系统默认内置的 Python 2 运行环境。若要平稳执行 Python 脚本,需先在终端确认当前系统中 Python 3 的可用状态。

按下快捷键 Command + 空格键 唤起聚焦搜索,输入 Terminal(或终端)并回车打开终端窗口。在终端提示符后输入以下版本检测命令:

python3 --version

若系统已安装,终端将返回类似如下的版本信息:

Python 3.11.5

同时可以通过 which 命令确认解释器所在绝对路径:

which python3
# 示例输出:/usr/local/bin/python3 或 /opt/homebrew/bin/python3
提示:如果终端提示 command not found: python3,系统通常会弹出安装 Xcode 命令行开发工具的提示框,点击安装即可;或者可通过 Homebrew 包管理器输入 brew install python 进行快速配置。

为了后续的演示,我们在当前桌面上创建一个简易的测试脚本。在终端中执行以下命令生成 demo.py:

cd ~/Desktop
echo 'print("Hello from Mac Terminal!")' > demo.py

二、方式一:使用 python3 命令直接运行脚本

使用 python3 命令直接执行脚本是 macOS 及所有类 Unix 系统中最通用、最直接的运行方式。该方式的核心逻辑是将 Python 解释器作为主进程启动,并将脚本文件作为参数传递给解释器进行解析执行。

1. 相对路径与绝对路径执行

当终端的当前工作目录已经切换至脚本所在文件夹时,可直接使用相对路径运行:

cd ~/Desktop
python3 demo.py

示例输出:

Hello from Mac Terminal!

如果当前不在脚本所在目录,也无需反复切换目录,直接在 python3 后跟上完整绝对路径即可:

python3 /Users/你的用户名/Desktop/demo.py
实用小技巧:在终端输入 python3 (注意后带空格)后,直接将访达(Finder)中的 .py 脚本文件拖拽进终端窗口,终端会自动补全该脚本的完整无误的文件路径。

2. 传递命令行参数

若脚本需要接收用户输入的外部参数,直接跟在脚本名称后方,以空格分隔即可:

python3 demo.py arg1 arg2

在 Python 脚本内部,可以通过标准库中的 sys.argv 列表依次读取传入的参数。

Mac终端怎么运行Python脚本:Python3命令与执行权限详解
图 1:使用 python3 命令运行脚本的操作链路与底层权限要求

三、方式二:配置 Shebang 与 chmod 执行权限直接运行

在日常使用或编写自动化运维脚本时,很多开发者希望像运行系统原生命令一样直接输入 ./demo.py 运行。如果直接输入该命令,终端往往会报错 zsh: permission denied: ./demo.py。要使脚本能作为独立程序直接执行,需要完成两个关键步骤:配置 Shebang 行与赋予执行权限。

1. 配置首行 Shebang(环境指示行)

Shebang 是指在文本文件首行以 #! 开头的特殊注释行。当操作系统内核试图直接运行该脚本时,会解析首行字符,识别并启动指定的解释器程序。

使用文本编辑器(如 VS Code、Sublime Text 或终端内置的 nano)打开 demo.py,确保第一行添加以下内容:

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

print("Hello from Mac Terminal as an executable script!")

为什么推荐使用 #!/usr/bin/env python3 而非固定路径?
不同 macOS 机器或不同环境下的 Python3 绝对路径可能各不相同(如 /usr/local/bin/python3 或 Apple Silicon 架构下的 /opt/homebrew/bin/python3)。利用 /usr/bin/env 可以根据当前用户的 $PATH 环境变量动态查找对应的 python3 路径,极大增强了脚本的可移植性。

2. 解析 Unix 文件权限与查看现状

在 macOS 终端中输入 ls -l demo.py 查看文件的当前详细属性:

ls -l demo.py
# 示例输出:-rw-r--r--  1 kukukuwl  staff  88 10 23 03:30 demo.py

最左侧的 10 位字符代表了该文件的类型与权限掩码:

  • 第 1 位:文件类型标识(- 表示常规普通文件)。
  • 第 2-4 位:文件所有者(User)的权限,上例中为 rw-(有读、写权限,无执行权限)。
  • 第 5-7 位:所属用户组(Group)的权限,上例中为 r--(仅读权限)。
  • 第 8-10 位:其他用户(Others)的权限,上例中为 r--(仅读权限)。

由于所有者权限中缺少 x(Execute,执行),因此系统内核在直接调用时会立即拒绝。

3. 使用 chmod 命令赋予执行权限

chmod(Change Mode)命令用于修改文件或目录的访问权限。常用命令格式有两种:

语法 A(符号法,最常用):

chmod +x demo.py

该命令表示为所有角色增加执行权限(Execute)。

语法 B(八进制数字法):

chmod 755 demo.py

八进制中 r=4, w=2, x=1:7(4+2+1,所有者具备读写执行)、5(4+1,群组具备读与执行)、5(4+1,其他人具备读与执行)。

修改完成后再次查看:

ls -l demo.py
# 变更后输出:-rwxr-xr-x  1 kukukuwl  staff  88 10 23 03:30 demo.py

此时权限位已包含 x,脚本已成为合法的可执行脚本。

4. 直接运行脚本:理解为什么要加 ./

在赋予权限后,在脚本所在目录下输入以下命令即可完成执行:

./demo.py
为什么不能直接输入 demo.py 运行?
出于安全考虑,macOS 终端的默认搜索路径变量 $PATH 并不包含当前工作目录(.)。如果不加 ./,Shell 只会在系统预设的系统路径(如 /usr/bin, /usr/local/bin 等)中查找名为 demo.py 的可执行程序,从而报告 zsh: command not found: demo.py。加上 ./ 明确告知 Shell:“请在当前目录寻找并执行该文件”。
Mac终端怎么运行Python脚本:Python3命令与执行权限详解
图 2:macOS 文件权限结构解析与 chmod +x 执行权限赋予机制

四、两种运行方式的核心机制对比与场景选择

理解这两种运行方式的区别,有助于在不同的工程与日常场景中做出正确选择:

对比维度 方式一:python3 script.py 方式二:chmod +x 配合 ./script.py
运行命令 python3 demo.py ./demo.py
文件权限要求 仅需当前用户具有读权限(r) 必须具备读权限与执行权限(r + x)
是否依赖首行 Shebang 不需要(首行有无 Shebang 均被作为普通注释) 必须依赖(用于指示内核拉起哪个解释器)
解释器版本切换 在命令行端自由指定(如 python3.9 或 python3.11) 由脚本首行静态声明,或跟随当前环境变量
最适合的使用场景 临时调试脚本、算法验证、多环境频繁切换的项目 编写 CLI 命令行工具、Git Hook 自动化钩子、后台定时任务
Mac终端怎么运行Python脚本:Python3命令与执行权限详解
图 3:显式调用解释器与直接运行模式的全维度架构对比

五、常见错误现象排查与解决办法

1. 报错 zsh: command not found: python

原因分析:早期的 macOS(如 Catalina 以前)内置了 Python 2.7 并映射了 python 命令。但在新版本 macOS 中,苹果彻底移除了 Python 2,且未将 python 默认软链接到 python3。
解决方法:将终端命令规范书写为 python3 脚本名.py;或者在个人 Shell 配置文件(~/.zshrc)中添加别名映射:echo 'alias python="python3"' >> ~/.zshrc && source ~/.zshrc。

2. 报错 zsh: permission denied: ./demo.py

原因分析:试图通过 ./demo.py 直接运行,但该文件尚未被赋予可执行权限(缺少 x 权限位)。
解决方法:在终端执行 chmod +x demo.py 赋予权限后再行运行。

3. 报错 zsh: no such file or directory: ./demo.py

原因分析:通常有两个原因:一是终端当前所在目录并不是 demo.py 所在的文件夹;二是脚本第一行的 Shebang 路径书写错误(例如写成了不存在的解释器路径 #!/usr/local/bin/pythn3)。
解决方法:先用 pwd 确认当前工作路径,并用 ls 确认文件存在;同时检查脚本首行是否准确写为 #!/usr/bin/env python3。

4. 虚拟环境(Virtualenv / venv)下的运行注意

在涉及依赖库的 Python 项目中,通常会建立隔离的虚拟环境。若要确保在终端运行脚本时使用的是虚拟环境中的第三方包,应先激活虚拟环境:

# 激活虚拟环境
source venv/bin/activate

# 此时运行 python3 即使用该虚拟环境内的解释器
python3 demo.py

# 退出虚拟环境
deactivate
Mac终端怎么运行Python脚本:Python3命令与执行权限详解
图 4:Mac 终端运行 Python 脚本决策流程与日常命令速查卡

六、总结

掌握在 Mac 终端运行 Python 脚本的要领,本质在于理清操作系统与解释器之间的协同关系。日常编写代码、运行单次测试或排查 Bug 时,直接使用 python3 脚本名.py 是最高效且无须关心权限的自然选择;而在需要将脚本作为独立小工具集成进 Shell 脚本、Git 钩子或定时任务时,通过添加 #!/usr/bin/env python3 首行并使用 chmod +x 赋予执行权限,则是更规范的工程化实践。

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。