Python源代码怎么运行:命令行执行.py文件基础教程

星野
星野
发布时间:2026-11-06| 11人浏览过
原创

本教程详细讲解如何在命令行终端中运行Python源代码(.py文件)。涵盖环境验证、脚本准备、终端目录定位、相对与绝对路径执行差异、执行机制原理解析以及常见错误排查。

运行 Python 源代码(即扩展名为 .py 的纯文本脚本)的最直接方式,是在操作系统的命令行终端中调用已安装的 Python 解释器,并将脚本文件的存储路径作为参数传递给解释器执行。基础命令形态为 python 文件名.py(在部分操作系统中写作 python3 文件名.py)。无论你使用的是 Windows、macOS 还是 Linux,这一过程都不依赖笨重的集成开发环境(IDE),仅凭操作系统自带的控制台即可高效运行代码。本文将从运行环境核验开始,详细拆解从编写文件、终端目录定位、相对与绝对路径执行差异、执行机制原理到常见报错排查的完整流程。

Python源代码怎么运行:命令行执行.py文件基础教程
图 0:Python 源代码通过命令行解释器执行到获取标准输出的全景工作流

一、准备工作:确认系统命令行中的 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
# 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,核心步骤分为“路径定位”与“指令下发”。根据工作习惯,主要有两种操作方式。

Python源代码怎么运行:命令行执行.py文件基础教程
图 1:从环境检测到终端执行的标准操作四步骤

方式一:进入脚本所在文件夹后再执行(最推荐的新手操作)

这种方式最清晰直观,读者能清楚知道终端当前正处于哪个目录下。以 Windows 路径 D:\py_learn 为例:

第 1 步:切换目录(使用 cd 命令)

Windows PowerShell 切换盘符与目录示例
cd D:\py_learn

如果是 macOS 或 Linux 系统,假设文件放在 ~/py_learn:

macOS / Linux 终端切换目录示例
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 命令后紧跟脚本的绝对路径(完整存储路径):

Windows 跨目录绝对路径调用示例
python D:\py_learn\demo.py
macOS / Linux 跨目录绝对路径调用示例
python3 /Users/username/py_learn/demo.py

四、关键差异剖析:相对路径执行 vs 绝对路径执行

很多刚接触命令行的读者会产生疑惑:既然带完整路径可以一步运行,为什么绝大多数教程依然建议先 cd 进入目录再运行?这两者在底层机制上有何本质不同?

Python源代码怎么运行:命令行执行.py文件基础教程
图 2:相对路径与绝对路径执行模式在工作目录(CWD)上的关键差异对比

这两者的根本区别在于操作系统的当前工作目录(Current Working Directory,简称 CWD)与 Python 内部相对路径解析的相互作用:

对比维度 方式一:先 cd 目录后相对路径运行 方式二:直接在外部用绝对路径运行
命令形态 cd /path/to/project
python 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源代码怎么运行:命令行执行.py文件基础教程
图 3:Python 解释器在命令行中从文本加载到虚拟机执行的内部底层架构
  1. 进程创建与参数解析:操作系统命令行解析输入的 python 程序名称,根据环境变量找到解释器可执行文件,创建独立系统进程,并将 demo.py 路径作为启动参数传入。
  2. 词法与语法分析(Lexing & Parsing):Python 解释器打开源文件,读取 UTF-8 字符序列,经过分词和语法分析器,将平铺的代码文本构建为一棵有层次的抽象语法树(AST)。如果代码中存在括号未闭合、缩进混乱等低级书写错误,在此阶段就会抛出 SyntaxError 并且完全不执行后续代码。
  3. 即时编译为字节码(Bytecode Compilation):AST 经过编译器处理,被转换为一系列针对 Python 虚拟机的平台无关指令集合——字节码。对于直接执行的入口主脚本,字节码通常保留在内存中;而对于 import 引入的模块,Python 会在磁盘的 __pycache__ 目录下生成 .pyc 缓存文件,以加速下次导入。
  4. Python 虚拟机(PVM)循环执行:Python Virtual Machine 启动求值循环(Evaluation Loop),按顺序读取字节码指令,分配内存对象,执行实际运算逻辑,并在遇到系统调用时向宿主操作系统请求资源。
  5. 标准 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 快速开启本地简易 HTTP 文件服务器
python -m http.server 8080

以模块方式运行可以确保正确处理包内相对导入(Relative Imports),常用于运行框架 CLI 工具(如 python -m venv myenv 创建虚拟环境)。

七、新手最常遇见的四类报错与排查指南

在命令行执行 Python 文件的过程中,初学者几乎都会遇到报错。绝大部分报错并非因为代码有逻辑漏洞,而是由于命令或环境配置不当引起的。对照以下场景,通常在 1 分钟内即可解决。

Python源代码怎么运行:命令行执行.py文件基础教程
图 4:命令行运行 Python 常见执行状态排查与决策分支树

1. 报错:'python' 不是内部或外部命令,也不是可运行的程序

Linux / macOS 终端对应提示:command not found: python

  • 原因分析:操作系统的命令行不知道去哪个目录寻找 python.exe。这通常是因为在安装 Python 时,忘记勾选安装向导底部的“Add Python to PATH”(将 Python 添加至环境变量)。
  • 解决办法:
    1. 在 macOS / Linux 上,优先尝试输入 python3 文件名.py。
    2. 在 Windows 上,可以运行 Python 官方安装包,选择“Modify”(修改),重新勾选“Add Python to environment variables”完成修复。

2. 报错:can't open file 'demo.py': [Errno 2] No such file or directory

  • 原因分析:解释器在当前终端所在的工作目录下,找不到名为 demo.py 的文件。
  • 排查步骤:
    1. 在命令行输入 dir(Windows)或 ls(macOS/Linux),仔细检查终端当前打印出的文件列表中到底有没有 demo.py。
    2. 检查文件名拼写是否完全一致(大小写、下划线)。
    3. 检查是否存在隐藏后缀:很多初学者在 Windows 资源管理器中新建文本,命名为 demo.py,但实际全名是 demo.py.txt。如果是这种情况,请输入 python demo.py.txt 验证,并重命名修正文件。

3. 报错:SyntaxError: invalid syntax

  • 原因分析:源代码违反了 Python 的语法规则,例如遗漏了英文冒号 :、中文字符混入英文字符串引号、缩进不统一等。另外,如果在 Python 2 环境下运行 Python 3 语法(如 f-string f"{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 源代码就会变得清晰、稳定且高效。

相关标签:

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

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 算法库。