Python源代码怎么运行:命令行执行.py文件基础教程
本教程详细讲解如何在命令行终端中运行Python源代码(.py文件)。涵盖环境验证、脚本准备、终端目录定位、相对与绝对路径执行差异、执行机制原理解析以及常见错误排查。
运行 Python 源代码(即扩展名为 .py 的纯文本脚本)的最直接方式,是在操作系统的命令行终端中调用已安装的 Python 解释器,并将脚本文件的存储路径作为参数传递给解释器执行。基础命令形态为 python 文件名.py(在部分操作系统中写作 python3 文件名.py)。无论你使用的是 Windows、macOS 还是 Linux,这一过程都不依赖笨重的集成开发环境(IDE),仅凭操作系统自带的控制台即可高效运行代码。本文将从运行环境核验开始,详细拆解从编写文件、终端目录定位、相对与绝对路径执行差异、执行机制原理到常见报错排查的完整流程。
一、准备工作:确认系统命令行中的 Python 环境
在执行任何 .py 文件之前,必须首先确认系统中已经正确安装了 Python 解释器,并且该解释器已经注册在系统的环境变量(PATH)中,以便在命令行任意位置都可以直接调用。
1. 打开操作系统的命令行工具
- Windows 系统:按下键盘快捷键
Win + R,在弹出的“运行”窗口中输入powershell或cmd,然后按下回车键。推荐使用功能更完善的 PowerShell。 - macOS 系统:按下快捷键
Command + 空格键调出聚焦搜索(Spotlight),输入Terminal(终端)并按回车打开。 - Linux 系统:可以使用桌面快捷键
Ctrl + Alt + T打开默认终端,或在应用列表中搜索“Terminal”。
2. 执行版本检查命令
在打开的黑底或白底终端窗口中,光标闪烁处输入以下命令并按下回车:
python --version
Python 3.11.5
注意 python 与 python3 的命令差异:在 macOS 和绝大多数 Linux 发行版中,系统可能保留了历史的 Python 2 别名,因此需要输入 python3 --version 才能调用 Python 3 环境。如果输入 python --version 提示找不到命令,请立即尝试输入 python3 --version。若两个命令都能正常返回 Python 3.x.x 的版本号,后续操作中只需使用能够成功响应的那个命令即可。
二、编写一个可供测试的 Python 源代码文件
Python 源代码本质上是按照 Python 语法规则编写的纯文本文件。为了演示完整的运行过程,我们可以创建一个简单的测试脚本。
在电脑中新建一个专门用于练习的文件夹(例如在 D 盘根目录创建 D:\py_learn,或在 macOS 用户家目录下创建 ~/py_learn),然后在该文件夹内创建一个名为 demo.py 的文本文件,输入以下内容并保存:
# demo.py - 命令行运行测试脚本
import sys
def main():
print("================================")
print(" Python 源代码在命令行中运行成功!")
print(f" 当前解释器版本: {sys.version.split()[0]}")
print("================================")
# 简单的运算逻辑示例
numbers = [1, 2, 3, 4, 5]
total = sum(x * 2 for x in numbers)
print(f" 列表翻倍求和计算结果: {total}")
if __name__ == "__main__":
main()
保存时的关键注意事项:
- 确认文件扩展名:文件名必须严格以
.py结尾。在 Windows 系统中,若未勾选“文件扩展名”显示,容易将文件误存为demo.py.txt,导致命令行无法识别。 - 文本编码格式:请确保以
UTF-8无 BOM 编码保存文件。现代代码编辑器(如 VS Code、Sublime Text 或 Notepad++)默认均为 UTF-8。尽量避免使用系统自带的简易记事本直接保存中文代码。
三、在命令行执行 .py 文件的核心步骤
要让系统解释器执行刚写好的 demo.py,核心步骤分为“路径定位”与“指令下发”。根据工作习惯,主要有两种操作方式。
方式一:进入脚本所在文件夹后再执行(最推荐的新手操作)
这种方式最清晰直观,读者能清楚知道终端当前正处于哪个目录下。以 Windows 路径 D:\py_learn 为例:
第 1 步:切换目录(使用 cd 命令)
cd D:\py_learn
如果是 macOS 或 Linux 系统,假设文件放在 ~/py_learn:
cd ~/py_learn
第 2 步:查看当前目录文件确认目标存在
在 Windows 下输入 dir,在 macOS/Linux 下输入 ls,按下回车。你应当能在列出的文件清单中清晰看到 demo.py。
第 3 步:调用 Python 命令执行脚本
python demo.py
若系统使用的是 python3,则执行:
python3 demo.py
================================
Python 源代码在命令行中运行成功!
当前解释器版本: 3.11.5
================================
列表翻倍求和计算结果: 30
方式二:不切换目录,使用绝对路径直接执行
如果你的终端正停留在其他工作路径(例如 C:\Users\Username),你也可以直接在 python 命令后紧跟脚本的绝对路径(完整存储路径):
python D:\py_learn\demo.py
python3 /Users/username/py_learn/demo.py
四、关键差异剖析:相对路径执行 vs 绝对路径执行
很多刚接触命令行的读者会产生疑惑:既然带完整路径可以一步运行,为什么绝大多数教程依然建议先 cd 进入目录再运行?这两者在底层机制上有何本质不同?
这两者的根本区别在于操作系统的当前工作目录(Current Working Directory,简称 CWD)与 Python 内部相对路径解析的相互作用:
| 对比维度 | 方式一:先 cd 目录后相对路径运行 | 方式二:直接在外部用绝对路径运行 |
|---|---|---|
| 命令形态 | cd /path/to/projectpython demo.py |
python /path/to/project/demo.py |
| 终端工作目录 (CWD) | 与脚本自身所在文件夹完全重合 | 保持在终端触发时的原始目录,与脚本脱节 |
代码内读取相对资源open('config.json') |
正常读取:直接在同目录下定位到配置文件 | 极易报错:系统会在调用命令所在的外部目录查找,导致 FileNotFoundError |
| 交互体验与输错概率 | 后续运行其他辅助脚本只需输入文件名,不易拼写错误 | 每次必须输入或粘贴超长路径,手打繁琐 |
| 典型适用工程场景 | 日常手工开发、交互式调试、多文件协作项目 | 系统定时任务(如 Linux Crontab)、自动化发布流水线 |
深入理解 CWD 差异:假设 demo.py 所在文件夹里有一个名为 data.txt 的数据文件,代码中写着 with open("data.txt") as f: ...。如果你处于桌面目录执行 python /Users/user/project/demo.py,Python 会尝试在“桌面”寻找 data.txt,进而抛出文件不存在错误!因此,理解并管理好终端的当前工作目录,是命令行运行 Python 最重要的基本功。
五、运行机制原理解析:终端回车后发生了什么?
与 C、C++ 或 Rust 需要手动经历“预处理 -> 编译 -> 链接”并生成特定操作系统的二进制可执行文件(.exe 或 ELF 二进制)不同,Python 是一门解释型动态语言。当你在终端敲击回车后,系统内部经历了一个自动化的多阶段流转过程:
- 进程创建与参数解析:操作系统命令行解析输入的
python程序名称,根据环境变量找到解释器可执行文件,创建独立系统进程,并将demo.py路径作为启动参数传入。 - 词法与语法分析(Lexing & Parsing):Python 解释器打开源文件,读取 UTF-8 字符序列,经过分词和语法分析器,将平铺的代码文本构建为一棵有层次的抽象语法树(AST)。如果代码中存在括号未闭合、缩进混乱等低级书写错误,在此阶段就会抛出
SyntaxError并且完全不执行后续代码。 - 即时编译为字节码(Bytecode Compilation):AST 经过编译器处理,被转换为一系列针对 Python 虚拟机的平台无关指令集合——字节码。对于直接执行的入口主脚本,字节码通常保留在内存中;而对于
import引入的模块,Python 会在磁盘的__pycache__目录下生成.pyc缓存文件,以加速下次导入。 - Python 虚拟机(PVM)循环执行:Python Virtual Machine 启动求值循环(Evaluation Loop),按顺序读取字节码指令,分配内存对象,执行实际运算逻辑,并在遇到系统调用时向宿主操作系统请求资源。
- 标准 I/O 与进程退出:脚本中的
print()语句将字符推入标准输出流(stdout),即时呈现在终端界面上。脚本所有指令执行完毕后,解释器进行垃圾回收并释放资源,最后向操作系统返回状态码0(表示顺利执行完成)。
六、命令行运行进阶技巧:传参与模块化运行
掌握了基础运行后,在实际工作和自动化处理中,我们经常需要给 Python 脚本动态传递参数,或者以模块形式运行程序。
1. 向 Python 源代码传递命令行参数
命令行执行的一个巨大优势,是可以非常灵活地传递外部参数,而无需修改 Python 内部代码。参数通过空格隔开,直接拼接在文件名后:
python demo.py "Alice" 25
在 Python 代码内部,可以通过标准库 sys.argv 列表直接读取这些参数:
import sys
# sys.argv[0] 是脚本文件名本身('demo.py')
# sys.argv[1] 是传入的第一个参数('Alice')
# sys.argv[2] 是传入的第二个参数('25')
name = sys.argv[1]
age = sys.argv[2]
print(f"收到外部参数:姓名 = {name}, 年龄 = {age}")
2. 使用 -m 参数以模块方式运行
有时你会看到类似 python -m 模块名 的命令格式。-m 代表 module(模块),它会让 Python 解释器在系统的模块搜索路径(sys.path)中查找对应的模块或包,并将其作为顶级脚本来运行。
python -m http.server 8080
以模块方式运行可以确保正确处理包内相对导入(Relative Imports),常用于运行框架 CLI 工具(如 python -m venv myenv 创建虚拟环境)。
七、新手最常遇见的四类报错与排查指南
在命令行执行 Python 文件的过程中,初学者几乎都会遇到报错。绝大部分报错并非因为代码有逻辑漏洞,而是由于命令或环境配置不当引起的。对照以下场景,通常在 1 分钟内即可解决。
1. 报错:'python' 不是内部或外部命令,也不是可运行的程序
Linux / macOS 终端对应提示:command not found: python
- 原因分析:操作系统的命令行不知道去哪个目录寻找
python.exe。这通常是因为在安装 Python 时,忘记勾选安装向导底部的“Add Python to PATH”(将 Python 添加至环境变量)。 - 解决办法:
- 在 macOS / Linux 上,优先尝试输入
python3 文件名.py。 - 在 Windows 上,可以运行 Python 官方安装包,选择“Modify”(修改),重新勾选“Add Python to environment variables”完成修复。
- 在 macOS / Linux 上,优先尝试输入
2. 报错:can't open file 'demo.py': [Errno 2] No such file or directory
- 原因分析:解释器在当前终端所在的工作目录下,找不到名为
demo.py的文件。 - 排查步骤:
- 在命令行输入
dir(Windows)或ls(macOS/Linux),仔细检查终端当前打印出的文件列表中到底有没有demo.py。 - 检查文件名拼写是否完全一致(大小写、下划线)。
- 检查是否存在隐藏后缀:很多初学者在 Windows 资源管理器中新建文本,命名为
demo.py,但实际全名是demo.py.txt。如果是这种情况,请输入python demo.py.txt验证,并重命名修正文件。
- 在命令行输入
3. 报错:SyntaxError: invalid syntax
- 原因分析:源代码违反了 Python 的语法规则,例如遗漏了英文冒号
:、中文字符混入英文字符串引号、缩进不统一等。另外,如果在 Python 2 环境下运行 Python 3 语法(如 f-stringf"{var}"),也会直接触发该错误。 - 解决办法:查看报错提示中用尖头
^指向的具体代码行和字符位置,检查该行及上一行代码的标点符号;并通过python --version确认当前解释器确实为 Python 3。
4. 报错:ModuleNotFoundError: No module named 'xxx'
- 原因分析:代码中使用了
import xxx,但当前运行命令的 Python 解释器环境中尚未安装对应的第三方拓展包。 - 解决办法:在终端中使用 pip 命令安装所需库,例如
pip install xxx(或python -m pip install xxx)。如果你在开发项目时使用了虚拟环境(Virtualenv),请务必在终端先执行虚拟环境激活脚本(如source venv/bin/activate或.\venv\Scripts\Activate.ps1),然后再运行脚本。
八、全文总结与核心命令速查表
命令行执行 Python 源代码是每一位开发者不可或缺的基础技能。它不仅让你深入理解计算机进程、环境与工作目录的交互关系,更是后续编写自动化脚本、部署云端服务器以及运维排错的基础。在日常使用中,读者只需牢记以下命令与操作模式:
| 目标操作 | Windows PowerShell 命令 | macOS / Linux 终端命令 | 操作说明与注意事项 |
|---|---|---|---|
| 检测运行环境 | python --version |
python3 --version |
确认输出版本号,确定后续使用的命令前缀 |
| 切换目标文件夹 | cd D:\project |
cd ~/project |
将当前工作目录(CWD)切至脚本所在位置 |
| 确认目录内容 | dir |
ls |
核对 .py 真实文件名,防止扩展名被掩盖 |
| 执行源代码 | python demo.py |
python3 demo.py |
基础执行,观察终端即时回显的标准输出 |
| 带参数运行 | python demo.py arg1 arg2 |
python3 demo.py arg1 arg2 |
代码内通过 sys.argv 提取传入的动态参数 |
| 检查上一命令退出码 | $LASTEXITCODE |
echo $? |
返回 0 代表正常退出,非 0 代表异常终止 |
只要做到“确认环境版本、定位真实目录、核验文件名全称”三要素,在命令行中执行 Python 源代码就会变得清晰、稳定且高效。
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













