在开发Python程序时,把代码保存成.py文件只是第一步,真正让程序跑起来往往要靠命令行。命令行执行脚本不仅能看到完整的错误堆栈,还可以灵活传入参数、指定解释器,适合自动化和服务器环境。理解命令行的调用机制,是每位Python使用者的基本功。

一、准备Python运行环境
要在命令行运行脚本,首先必须让系统认识python这条命令。大多数官方安装包在Windows上勾选“Add Python to PATH”后,就能直接在cmd中输入python生效。Linux和macOS通常自带Python,但版本可能较旧,建议用包管理器或源码安装新版本,并使用python3来区分。
验证环境是否就绪很简单,打开终端执行下面的命令,如果能看到版本号,说明解释器可用:
# Windows cmd 或 PowerShell python --version # Linux / macOS python3 --version
如果提示“不是内部或外部命令”,说明PATH没有配置好。此时可以重新运行安装程序修复,或者手动把Python安装目录及其下的Scripts目录加入系统环境变量。只有在命令行能调出解释器,后续执行脚本才成为可能。
二、基础执行方式
假设我们在D盘有一个hello.py文件,内容只是打印一句话。最直观的执行方式就是切到文件所在目录,然后输入python加文件名。Windows下用cd切换盘符和路径,Linux则用cd进入对应文件夹。
下面是一段示例脚本和对应的执行过程:
# hello.py
print("命令行启动Python脚本成功")
# Windows D: cd D:scripts python hello.py # Linux / macOS cd /home/user/scripts python3 hello.py
如果不想切换目录,也可以写脚本的绝对路径。例如在任意位置执行python D:scriptshello.py,解释器会直接加载该路径文件。不过路径中含有空格时,Windows要用双引号包裹,Linux则用反斜杠转义或引号包裹,否则会被命令行误解析。
三、给脚本传递命令行参数
真实场景里,脚本往往要处理不同数据,这时就要通过命令行传参。Python标准库中的sys模块提供了argv列表,其中第一个元素是脚本名,后续元素才是用户传入的参数。相比改代码里的常量,传参让程序更通用。
看一个接收用户名和年龄并打印的例子:
# greet.py
import sys
if len(sys.argv) < 3:
print("用法: python greet.py 姓名 年龄")
sys.exit(1)
name = sys.argv[1]
age = sys.argv[2]
print("你好," + name + ",你今年" + age + "岁")
在命令行这样调用:
python greet.py 张三 28
除了sys.argv,argparse模块能更规范地定义参数类型、默认值和帮助信息,适合复杂工具。但sys.argv胜在轻量,理解它就掌握了命令行交互的核心。注意所有参数都以字符串形式进入程序,需要数字时要自行转换类型,否则拼接会报错。
四、赋予脚本直接可执行权限
在Linux和macOS上,还能把.py文件变成像普通命令一样直接运行。做法是在脚本首行写shebang,声明用哪个解释器,再用chmod加上执行权限。这样输入./script.py就能启动,不必每次敲python。
示例脚本头部与授权命令如下:
#!/usr/bin/env python3
print("我可以直接被执行")
chmod +x script.py ./script.py
Windows不支持shebang直接执行,但可以把.py关联到python.exe,之后双击或在命令行输文件名即可。不过双击会闪退,看不到输出,因此调试阶段仍推荐显式调用解释器。直接执行方案在写运维小工具时非常省事,减少了命令长度。
五、使用虚拟环境隔离依赖
当脚本依赖requests、numpy等第三方库时,全局安装容易引发版本冲突。命令行创建虚拟环境是标准做法。Python内置venv模块,几行命令就能生成独立环境,激活后安装的包只对该环境生效。
操作流程演示:
# 创建环境 python -m venv myenv # Windows激活 myenvScriptsactivate # Linux / macOS激活 source myenv/bin/activate # 安装依赖并运行 pip install requests python crawl.py
激活后命令行前面会出现环境名提示,此时运行的python指向环境内的解释器。项目交接时只需导出requirements.txt,对方就能复现一样的环境。这种隔离思路让多项目并行开发不再互相干扰,也方便在服务器上部署固定版本的组合。
六、常见错误与排查思路
新手在命令行跑脚本常遇到两类问题:一是路径错误,提示文件不存在;二是模块找不到,提示ImportError。前者多为cd没切对盘符或相对路径写错,用dir或ls确认当前目录文件最能快速定位。
后者通常因为用系统python跑了虚拟环境装的包,或者脚本里用了同名文件掩盖了标准库。遇到问题时,可在脚本开头打印sys.executable和sys.path,看清实际解释器和搜索路径:
import sys print(sys.executable) print(sys.path)
另外,编码问题也值得留意。Windows终端默认GBK,而脚本若含中文且存成UTF-8,偶尔会报编码异常。在文件开头写# -*- coding: utf-8 -*-并统一用UTF-8保存,基本可以规避。掌握这些排查手段,命令行执行Python脚本就会变得稳定可控。