Python脚本怎么在命令行运行
详细讲解在Windows、macOS和Linux命令行中运行Python脚本的完整步骤、路径定位、传参技巧及常见报错排查。
在命令行中运行 Python 脚本,核心原理是调用操作系统的终端程序(Windows 的命令提示符 CMD、PowerShell,或 macOS 与 Linux 的终端 Terminal),让系统找到 Python 解释器程序,并把脚本文件的存储路径作为参数传给它。最基础的执行命令仅需一行:python 脚本文件路径.py。无论操作系统如何差异化,底层执行逻辑均完全一致。
一、确认 Python 环境与命令别名
要在命令行运行脚本,前提是当前操作系统能够识别 python 命令。在终端中直接键入命令并按下回车,系统会沿着环境变量 PATH 所记录的目录清单逐一查找匹配的可执行文件。
打开终端窗口,输入以下命令核查环境是否可用:
python --version
在部分 Linux 发行版或 macOS 系统中,系统内置或额外安装的 Python 3 对应的别名可能是 python3,此时应执行:
python3 --version
如果控制台返回了具体的版本信息(如 Python 3.11.5),表明解释器已就绪。如果终端提示 'python' 不是内部或外部命令 或 command not found: python,则说明 Python 尚未安装,或者安装时没有将其主目录及 Scripts 目录添加到操作系统的环境变量 PATH 中。
二、定位脚本并执行的标准操作步骤
在实际操作中,运行一个 Python 脚本主要有两种路径策略:一种是“先切换目录再直接运行”,另一种是“直接提供脚本的完整路径”。前者适合日常调试与频繁交互,后者适合自动化脚本或计划任务。
准备测试脚本
在电脑中新建一个名为 hello.py 的文本文件,写入以下测试代码:
# hello.py
import sys
import os
print("=== Python 脚本运行测试 ===")
print(f"当前工作目录 (CWD): {os.getcwd()}")
print(f"当前执行解释器: {sys.executable}")
print("运行成功!")
方式一:切换至脚本所在目录运行(推荐)
最清晰不易出错的做法是使用 cd 命令切换当前命令行工作目录至脚本文件所在的文件夹:
- Windows 命令行:若文件在 D 盘,需要使用
/d参数跨盘符切换:cd /d D:\projects\demo python hello.py - macOS / Linux 终端:直接使用相对路径或家目录路径:
cd ~/projects/demo python3 hello.py
此时终端输出示例:
=== Python 脚本运行测试 ===
当前工作目录 (CWD): /Users/username/projects/demo
当前执行解释器: /usr/local/bin/python3
运行成功!
方式二:使用绝对路径直接执行
如果不想切换工作目录,也可以在任意位置输入 Python 命令后,直接跟随脚本文件的绝对路径。注意:如果路径中包含空格,必须用英文双引号将路径包裹起来。
# Windows 环境下的绝对路径运行示例
python "C:\Users\Administrator\Desktop\my project\hello.py"
# macOS/Linux 环境下的绝对路径运行示例
python3 "/Users/username/Documents/my project/hello.py"
三、进阶运行模式与参数传递
在实际生产与自动化任务中,除了直接敲击 python script.py,经常需要向脚本传递动态参数,或者采用模块形式运行。
1. 向脚本传递命令行参数
在脚本名称后面空格跟随的值会被作为命令行参数。Python 代码中可以通过标准库 sys.argv 直接获取:
# process_data.py
import sys
print("接收到的所有参数列表:", sys.argv)
if len(sys.argv) > 1:
filename = sys.argv[1]
print(f"处理目标文件: {filename}")
else:
print("未传入文件名参数")
在命令行中传入参数执行:
python process_data.py data.csv --mode=fast
此时 sys.argv[0] 固定为脚本本身的文件名 process_data.py,sys.argv[1] 为 data.csv,sys.argv[2] 为 --mode=fast。
2. 模块运行模式(-m 参数)
许多第三方包或多文件项目在直接使用 python path/to/script.py 时会遇到 ImportError: attempted relative import with no known parent package。这是因为直接执行脚本会将脚本所在目录作为 sys.path[0],切断了包的上层组织关系。
使用 -m 参数可以让 Python 把目标作为一个模块执行,并将当前命令行工作目录加入模块搜索路径:
# 以模块模式执行包内的入口
python -m my_package.main
# 运行内置 HTTP 测试服务器
python -m http.server 8000
3. 输出重定向与后台执行
在服务器或自动化维护中,通常希望脚本在后台运行并将结果输出保存到日志文件中:
# Linux / macOS 下后台运行脚本并将标准输出与错误重定向到文件
nohup python3 task.py > task.log 2>&1 &
# Windows PowerShell 中保存输出到文件
python task.py | Out-File -FilePath task.log
四、常见报错与排查清单
初次在命令行运行 Python 脚本时,常遇到的错误多集中于环境变量、路径和虚拟环境方面。按照以下清单可快速定位原因:
| 报错提示内容 | 根本原因分析 | 对应解决策略 |
|---|---|---|
'python' 不是内部或外部命令 |
系统 PATH 环境变量中缺少 Python 安装路径 | 在系统高级设置的环境变量中添加 Python 主目录及 Scripts 目录,重启终端。 |
[Errno 2] No such file or directory |
当前工作目录下没有该文件,或路径拼写有误 | 输入 dir(Windows)或 ls(macOS/Linux)核对文件实际名称,注意是否误加了 .txt 隐藏后缀。 |
ModuleNotFoundError: No module named 'xxx' |
当前终端使用的解释器未安装该第三方库 | 确认是否未激活虚拟环境(venv)。使用 python -m pip install xxx 将库安装到当前解释器中。 |
SyntaxError: Non-UTF-8 code starting with... |
代码包含中文注释但文件保存为 ANSI/GBK 编码 | 在编辑器中将文件编码转换为 UTF-8,并在文件首行指定 # -*- coding: utf-8 -*-。 |
如果电脑中安装了多个 Python(如系统自带、Anaconda、官方安装包),可通过在终端运行 where python(Windows)或 which python3(macOS/Linux)查明当前调用的究竟是哪一个具体路径下的解释器。
五、核心知识总结
在命令行运行 Python 脚本的核心流程可以概括为三个要素:解释器别名、执行参数与脚本工作路径。只要确认 Python 已经注册到系统 PATH 中,并使用 cd 正确定位到脚本所在目录,执行即可顺利完成。
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









