Mac终端怎么运行Python脚本:Python3命令与环境配置
详细讲解在Mac终端中运行Python脚本的核心方法,包括Python3命令的正确调用、终端文件路径定位、Zsh环境配置以及通过venv虚拟环境隔离依赖的实用步骤与常见报错解决方案。
python3 命令显式指定解释器,配合脚本文件的路径即可发起调用。围绕这一核心任务,读者需要掌握三大关键环节:基础执行命令与文件路径定位、系统环境变量与解释器指向的配置、以及使用虚拟环境隔离项目依赖的规范方法。
一、运行 Python 脚本的标准步骤
macOS 自带的终端(Terminal)是运行脚本的标准命令行环境。初学者运行脚本时,最常见的不顺畅往往不是代码本身有错,而是没有正确定位到脚本所在的文件目录。标准的执行流程可分为以下三个步骤:
1. 打开终端并检查 Python3 状态
按下键盘快捷键 Command + 空格键 唤起聚焦搜索(Spotlight),输入 Terminal 或 终端 后回车即可启动终端窗口。启动后,首先在命令行输入以下命令检验系统中是否已存在可用的 Python 3 解释器:
python3 --version
只要能够输出类似 Python 3.x.x 的版本编号,说明当前终端已经可以直接使用 python3 执行脚本。
2. 定位到脚本所在的目录
假设你在桌面创建了一个名为 hello.py 的测试脚本,内容如下:
# hello.py
print("Hello from Mac Terminal!")
要在终端中运行该文件,终端的当前工作目录必须是该文件所在的目录,或者在执行命令时传入文件的完整绝对路径。最推荐的方法是使用 cd(Change Directory)命令切换目录:
cd ~/Desktop
如果你不清楚脚本的具体路径,也可以在终端中输入 cd (注意 cd 后面保留一个空格),然后直接将访达(Finder)中的文件夹拖拽到终端窗口中,终端会自动补全该目录的完整绝对路径,敲击回车即可顺利进入。
3. 执行脚本并查看输出
进入脚本所在文件夹后,直接输入 python3 加上脚本文件名即可运行:
python3 hello.py
若不想切换目录,也可以直接在命令中跟上完整路径:
python3 ~/Desktop/hello.py
二、进阶技巧:使用 Shebang 与权限直接执行脚本
除了每次手动敲击 python3 脚本名.py,还可以将脚本配置为类似系统原生程序一样,通过 ./脚本名.py 直接运行。这需要满足两个前提:指定解释器路径(Shebang)以及为文件赋予执行权限。
1. 添加 Shebang 声明
在 Python 脚本的第一行添加以下声明,告诉操作系统应调用哪个解释器来运行后续代码:
#!/usr/bin/env python3
# main.py
import sys
print(f"脚本正在运行,Python版本为:{sys.version.split()[0]}")
使用 /usr/bin/env python3 的好处是:系统会自动根据当前环境的 $PATH 变量去寻找匹配的 Python3 路径,具有良好的移植性。
2. 赋予脚本执行权限
在 macOS 默认的安全机制下,新建的代码文件通常只有读写权限(rw-),没有执行权限(x)。直接执行 ./main.py 会提示 zsh: permission denied: ./main.py。使用 chmod 命令为脚本增加可执行权限:
chmod +x main.py
赋予权限后,即可直接通过相对路径调用:
./main.py
三、Python3 命令解析与环境配置原理
许多初学者在 Mac 终端中输入 python 时,会遇到 zsh: command not found: python 的报错。要解决这个问题,必须了解 macOS 系统当前对 Python 的管理机制与 PATH 环境变量的工作流程。
1. 为什么系统找不到 python 命令?
在 macOS Monterey(12.3)及更早版本中,系统曾预装过已经停更的 Python 2.7,当时的 python 命令指向 Python 2。从 macOS 12.3 开始,Apple 彻底移除了内置的 Python 2.7。同时,为了避免脚本兼容性混乱,系统并未将 python 默认指向 python3。因此,在未额外配置的情况下,系统只认 python3,输入 python 自然会提示命令不存在。
2. 确认 python3 所在的绝对路径
Mac 上可以同时存在多个 Python3 解释器。了解当前调用的具体是哪一个,可以使用 which 命令:
which python3
常见路径对应来源如下:
/usr/bin/python3:随 Xcode Command Line Tools 安装的系统级精简 Python,受系统完整性保护(SIP)保护,不适合安装庞大的第三方科学计算包。/opt/homebrew/bin/python3:在 Apple Silicon 架构(M1/M2/M3 等芯片)Mac 上通过 Homebrew 安装的 Python。/usr/local/bin/python3:在 Intel 架构 Mac 上通过 Homebrew 或 Python 官网安装包安装的路径。
3. 配置 ~/.zshrc 别名与 PATH
macOS 默认 Shell 是 Zsh。如果你希望输入 python 时自动执行 python3,可以在用户主目录的配置文件 ~/.zshrc 中设置别名(alias):
# 打开或编辑 ~/.zshrc 文件
nano ~/.zshrc
在文件末尾添加以下一行:
alias python="python3"
保存退出(在 nano 中按 Ctrl + O 确认回车,再按 Ctrl + X 退出),并让配置立即生效:
source ~/.zshrc
此时再次输入 python --version,终端就会正常响应并输出与 python3 相同的版本信息。
四、规范管理:使用 venv 虚拟环境运行项目
在较新的 macOS 环境下,直接在全局运行 pip3 install requests 时,通常会遇到以下错误拦截:
This environment is externally managed. To install Python packages system-wide, try brew install...
这是 Python 官方为了防止用户随意污染系统环境或造成全局包冲突引入的防护规范(PEP 668)。正确的做法是:为每个具体的项目创建独立的虚拟环境(virtual environment)。
1. 创建独立虚拟环境
进入你的项目工作目录,使用内置的 venv 模块创建一个专属于该项目的虚拟运行沙盒(通常命名为 .venv):
cd ~/Projects/my_script_project
python3 -m venv .venv
执行该命令后,当前目录下会生成一个名为 .venv 的文件夹,里面包含该项目专属的 Python 解释器副本与包管理工具。
2. 激活虚拟环境
创建完成后,使用 source 命令激活该虚拟环境:
source .venv/bin/activate
激活成功后,终端提示符最前端会出现 (.venv) 标识。在当前激活状态下:
- 直接输入
python即可调用该虚拟环境的解释器,无需输入python3。 - 使用
pip install 包名安装的所有第三方依赖,都会存放在当前环境内,绝不会污染系统。
3. 在虚拟环境中执行与退出
# 运行依赖第三方包的脚本
python main.py
# 脚本运行完毕,退出当前虚拟环境
deactivate
五、运行脚本过程中的常见报错排查
在 Mac 终端运行 Python 脚本时,绝大多数阻碍集中在路径、权限和依赖三方面。以下列举常见报错表现与针对性修复步骤:
| 报错表现 | 主要原因 | 解决办法 |
|---|---|---|
zsh: command not found: python |
系统未配置 python 别名,且默认未安装 Python 2 | 统一改用 python3 脚本名.py;或在 ~/.zshrc 中加入 alias python=python3。 |
zsh: permission denied: ./main.py |
直接调用脚本时,该文件未被赋予可执行权限 | 改用 python3 main.py 运行;或执行 chmod +x main.py 赋予执行权限。 |
No such file or directory |
终端当前所在的目录并不在脚本所在位置 | 输入 pwd 查看当前目录,使用 cd 切换到脚本所在目录,或将文件拖入终端获取绝对路径。 |
ModuleNotFoundError: No module named 'xxx' |
当前运行的 Python 解释器环境中未安装该第三方依赖 | 确认当前所使用的解释器版本,激活对应的虚拟环境后执行 pip install xxx。 |
六、总结与实践建议
在 Mac 终端运行 Python 脚本,日常保持以下几点习惯能最大程度避免环境与运行故障:
- 明确指定版本:日常始终键入
python3而非模糊的python,养成清晰声明解释器的习惯。 - 善用路径拖拽:不确定脚本的绝对路径时,将文件直接拖入终端窗口是最安全且不易产生拼写错误的做法。
- 杜绝全局污染:避免在全局解释器中盲目运行
pip install。对于任何涉及第三方依赖的脚本,务必建立并激活专属的venv虚拟环境,保持系统环境的纯净与稳定。
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













