Python脚本怎么在命令行中执行
详细讲解在Windows、macOS与Linux系统命令行中执行Python脚本的具体方法,涵盖基础运行命令、工作目录与路径定位、命令行传参、模块执行机制以及常见报错排查。
在命令行中执行 Python 脚本的核心操作非常直接:打开终端,使用 cd 命令切换到脚本所在的文件夹,然后输入 python 脚本名.py(在 macOS 和部分 Linux 系统中通常为 python3 脚本名.py)并按下回车键。本文将系统梳理从环境确认、目录定位、基础运行,到传参调试与常见报错排查的完整实操细节。
一、准备工作:打开终端并确认 Python 解释器状态
在任何操作系统中,所谓的“命令行”都是指一个允许输入文本命令并接收文本反馈的控制台程序。在执行代码之前,需要先唤出对应的控制台窗口:
- Windows 用户:按下键盘上的
Win + R,输入powershell或cmd后回车;或者在任意文件夹的空白处按住 Shift 单击右键,选择“在此处打开 PowerShell 窗口”。 - macOS 用户:使用快捷键
Command + 空格调出聚焦搜索(Spotlight),输入“终端”(Terminal)并回车。 - Linux 用户:通常可以使用快捷键
Ctrl + Alt + T快速开启默认终端。
打开终端后,第一件事是验证系统是否已经正确安装了 Python 并且能够识别相关命令。直接在终端中输入以下版本检查指令并回车:
python --version
如果输入该命令后提示找不到命令,或者直接弹出了微软应用商店(Windows 系统常见情况),请尝试执行:
python3 --version
# 或者 Windows 下专属的启动器:
py --version
注意区分 Python 与 Python 3:在 macOS 和 Linux 系统中,历史上系统自带的 Python 2 绑定在 python 命令上,而较新的 Python 3.x 解释器通常被命名为 python3。因此在非 Windows 环境下,推荐默认使用 python3 来运行现代 Python 程序。
二、核心操作:定位工作目录并执行脚本
编写一段基础的 Python 脚本,并将其保存为 hello.py。例如文件内容如下:
# hello.py
import sys
print("Hello from Command Line!")
print(f"当前运行的 Python 解释器路径: {sys.executable}")
新手初次在终端中运行该文件时,最容易遇到的报错就是 python: can't open file 'hello.py': [Errno 2] No such file or directory。这是因为终端每次启动时,都会处于一个特定的“当前工作目录”(Current Working Directory)。如果当前工作目录与脚本所在的磁盘路径不一致,解释器便找不到该文件。
方式 A:先切换目录,再以文件名执行(最稳妥)
假设你的 hello.py 保存在桌面或者项目的文件夹下,可以通过终端的 cd(Change Directory)命令进入该目录:
# 1. 切换到存放脚本的文件夹
cd ~/Desktop/my_project
# 2. 列出当前目录下的文件,确认 hello.py 存在
ls
# 3. 执行 Python 脚本
python3 hello.py
# 1. 切换到指定驱动器和目录
cd D:\workspace\my_project
# 2. 查看文件
dir
# 3. 运行脚本
python hello.py
方式 B:在任意工作目录直接传入完整路径
如果在当前工作目录下不便执行 cd 切换,也可以直接将脚本的绝对路径或相对路径作为参数传递给解释器:
# 使用绝对路径运行
python /Users/username/Desktop/my_project/hello.py
# Windows 环境下的绝对路径(包含空格的路径务必使用双引号包裹)
python "C:\Users\admin\My Projects\hello.py"
实用小技巧:大多数终端(包括 macOS Terminal、Windows PowerShell、Linux 控制台)都支持文件拖拽。在终端中先敲入 python (注意末尾保留一个空格),然后从文件资源管理器或访达中将 .py 文件直接拖入终端窗口,终端会自动补全该脚本的完整绝对路径,直接回车即可运行。
三、进阶方式:传递命令行参数与模块化执行
在实际开发和运维脚本中,我们往往不需要在代码内部写死输入值,而是希望在敲下命令的同时,向脚本动态传递选项和参数。
1. 使用 sys.argv 读取命令行参数
Python 提供了内置的 sys.argv 列表来接收用户输入的参数。sys.argv[0] 永远是脚本本身的名称,从 sys.argv[1] 开始则是用户追加的实际参数:
# greet.py
import sys
if len(sys.argv) > 1:
user_name = sys.argv[1]
else:
user_name = "访客"
print(f"你好, {user_name}! 接收到的参数总数: {len(sys.argv)}")
python greet.py 张三
2. 模块运行模式:python -m
当项目变得复杂、出现多层包与模块嵌套时,直接运行深层的子文件经常会遭遇 ImportError: attempted relative import with no known parent package 错误。此时推荐使用 -m(module)参数:
# 在项目根目录,以模块方式执行 package/processor.py
python -m package.processor
这种做法会让 Python 自动将当前执行命令的目录置入模块搜索路径 sys.path 的首位,确保同包内部的相对导入正常工作。
3. 类 Unix 系统的直接执行(Shebang 与执行权限)
在 Linux 和 macOS 环境下,可以通过在脚本第一行添加 Shebang 声明,并赋予文件可执行权限,从而省略前面的 python3 前缀:
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
print("通过 ./ 方式直接运行成功!")
# 赋予脚本可执行权限 (+x)
chmod +x task.py
# 直接作为可执行程序发起
./task.py
四、常见报错表现与排查步骤
在终端执行脚本的过程中,绝大多数问题并非出在代码本身的业务逻辑,而是出在环境与路径识别上。以下列出排查频率最高的四类报错及其修复方案:
1. 'python' 不是内部或外部命令 / command not found: python
原因:操作系统的环境变量 PATH 中没有登记 Python 解释器的安装目录。操作系统在各个默认文件夹下查找名为 python 的程序未果,因此拒绝执行。
排查与修复:
- 在 Windows 系统中,重新运行 Python 安装包,勾选安装界面下方的“Add python.exe to PATH”并点击 Repair(修复)。
- 若暂时不方便重装,可以在终端尝试使用
py 脚本名.py代替。 - 在 macOS 或 Linux 中,尝试输入
which python3确认其安装路径是否正常输出(如/usr/local/bin/python3)。
2. FileNotFoundError: [Errno 2] No such file or directory
原因:终端当前所在路径下根本不存在输入的文件名,或者文件名拼写存在大小写、扩展名错误(例如误将文件保存为 demo.py.txt)。
排查与修复:在终端键入 ls(macOS/Linux)或 dir(Windows),查看打印出的列表中是否有目标文件;确认当前目录无误后再发起命令。
3. ModuleNotFoundError: No module named 'xxx'
原因:在代码编辑器(如 PyCharm、VS Code)中运行正常,但在系统命令行中却提示找不到某个第三方库。这通常是因为编辑器内部配置了独立的虚拟环境(Virtualenv),而当前在终端中直接敲 python 调用的是全局解释器,全局环境中并未安装该库。
排查与修复:检查当前终端是否处于虚拟环境中。若尚未激活,可执行对应的激活脚本,或者直接使用虚拟环境中的 Python 二进制执行:
# macOS / Linux 激活命令
source venv/bin/activate
# Windows PowerShell 激活命令
.\venv\Scripts\Activate.ps1
# 激活后终端提示符前通常会出现 (venv) 标记,再执行脚本:
python app.py
五、总结与日常操作建议
在命令行中执行 Python 脚本的本质,是将目标文件路径作为输入参数传递给Python 解释器程序。熟练掌握这一过程可以归纳为三条核心操作准则:
- 明确解释器来源:在多环境共存的电脑中,时刻清楚当前终端敲下的
python对应的是系统全局环境还是项目专属虚拟环境;必要时使用which python(Mac/Linux)或where.exe python(Windows)核对绝对路径。 - 保持目录感知:养成执行前先
cd到目标工程根目录的习惯,这能最大程度规避脚本内部相对文件读写(如配置文件、数据表)所引发的路径寻址错误。 - 善用终端自动化特性:善用 Tab 键进行文件名与路径的自动补全,善用键盘“向上箭头”调出历史执行命令,善用文件拖拽快速获取绝对路径。这些操作能大幅减少输入差错,提升日常脚本运行与调测效率。
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









