Linux终端运行Python脚本的基本命令

远山来客
远山来客
发布时间:2026-11-12 | 5人浏览过
原创

系统介绍在Linux终端中运行Python脚本的核心命令与执行机制,详细讲解python3解释器调用、Shebang可执行权限配置、参数传递、后台与重定向运行以及典型报错排查。

分类:Linux 实操教程 • 阅读时长:约 8 分钟 • Python3 Bash 文件权限
Linux终端运行Python脚本的基本命令
图 0:Linux 终端运行 Python 脚本概览
在 Linux 终端中运行 Python 脚本主要有两种基础途径:最通用、最直接的方式是显式调用解释器执行 python3 脚本名.py;另一种是将脚本设为独立可执行文件,通过首行 Shebang 声明解释器并赋予执行权限后,以 ./脚本名.py 直接运行。本文将系统拆解这两种基本命令的操作步骤、背后的系统加载机制、命令行参数传递与后台常驻方法,并逐一解决初学者最常遇到的权限与路径报错。

一、执行前的终端环境与路径确认

在输入执行命令之前,必须先确认两件事:当前系统使用的 Python 解释器版本,以及脚本文件的具体存放位置。现代 Linux 发行版(如 Ubuntu 20.04+、Debian 11+、Rocky Linux、CentOS Stream 等)通常默认内置 Python 3,且命令名称为 python3 而非 python。

1. 检查 Python 解释器

在终端中键入以下命令,检查 Python 3 是否已经就绪:

python3 --version
示例终端输出Python 3.10.12

如果系统提示 command not found: python3,说明尚未安装解释器。在基于 Debian/Ubuntu 的系统中可通过 sudo apt update && sudo apt install python3 进行安装;在 RedHat/Rocky 系中则执行 sudo dnf install python3。此外,可以通过 which python3 确认可执行文件的实际绝对路径(通常为 /usr/bin/python3)。

2. 确认脚本文件与工作目录

编写一个最基础的测试脚本 hello.py,其内容如下:

# hello.py
print("Hello from Linux Terminal!")

使用 pwd 命令查看当前终端所处的目录,并用 ls -l 确认 hello.py 是否确实在当前工作目录下。如果脚本位于其他路径,执行命令时必须补齐相对路径或绝对路径。

Linux终端运行Python脚本的基本命令
图 1:从创建到显式运行 Python 脚本的标准操作步骤

二、基本命令之一:显式调用 Python 解释器

这是最推荐、最不易出错的执行方式。其核心逻辑是将 Python 解释器作为一个可执行程序启动,并将脚本路径作为参数传递给它。

1. 运行当前目录下的脚本

当终端工作目录已切换到脚本所在目录时,直接执行:

python3 hello.py
示例终端输出Hello from Linux Terminal!

2. 运行指定路径下的脚本

如果当前终端位于用户主目录,而脚本保存在 /home/user/projects/app.py,则无需先 cd 切换目录,直接带路径执行即可:

# 使用绝对路径执行
python3 /home/user/projects/app.py

# 或者使用相对路径执行
python3 ./projects/app.py
权限关键点:为什么此方法不需要执行权限(+x)?
在这个命令结构中,真正被 Linux 内核加载并执行的二进制程序是 /usr/bin/python3。对于 hello.py 而言,它仅仅是一个被 Python 解释器打开并读取的纯文本文件。因此,操作用户只要拥有该脚本的读权限(r)即可顺利运行,脚本本身没有可执行权限(x)完全不影响运行。

三、基本命令之二:作为独立可执行脚本直接运行

在 Linux 自动化运维或编写命令行工具时,更习惯像运行系统命令一样直接键入 ./hello.py。要实现这种执行方式,必须完成两项配置:定义 Shebang 解释器指路行,以及通过 chmod 赋予文件执行权限。

1. 在脚本首行添加 Shebang

编辑脚本文件,必须在第一行(第 1 行第 1 个字符,不能有任何前置空格或空行)加入以下声明:

#!/usr/bin/env python3
print("Hello from executable Python script!")

为什么推荐 #!/usr/bin/env python3 而非 #!/usr/bin/python3?

在不同的 Linux 发行版或用户自定义环境中,Python 解释器的物理位置可能不同(例如某些系统在 /usr/local/bin/python3,而在虚拟环境中则位于虚拟环境的 bin 目录下)。/usr/bin/env 是一个系统标准辅助工具,它会根据当前终端会话的 $PATH 环境变量顺序检索并使用第一个找到的 python3,因而具有更强的可移植性。

2. 赋予脚本可执行权限

Linux 新建的文件默认权限通常为 0644(即 rw-r--r--),缺少执行权限(x)。通过 chmod 命令添加执行标志:

chmod +x hello.py

此时通过 ls -l hello.py 查看,权限位将变为形如 -rwxr-xr-x,文件名在支持彩色的终端中通常会高亮为绿色。

3. 执行脚本:必须明确前缀 ./

在当前目录下运行该脚本:

./hello.py
示例终端输出Hello from executable Python script!
避坑提醒:为什么不能直接敲 hello.py?
当在终端输入一个不带斜杠的单词时,Linux Shell 只会在环境变量 $PATH 所列出的系统目录中搜索匹配的命令。出于安全考量,Linux 的 $PATH 默认不包含当前目录 .。如果不加 ./,Shell 会提示 command not found: hello.py;显式加上 ./ 是为了告知 Shell“就在当前目录下查找并执行此文件”。
Linux终端运行Python脚本的基本命令
图 2:显式解释器调用与 Shebang 直接执行机制对比

四、进阶常用命令:参数传递、输出重定向与后台运行

在实际生产环境中,运行 Python 脚本往往伴随着外部参数输入、日志记录以及长时间脱机运行的需求。

1. 向 Python 脚本传递命令行参数

无论采用哪种运行方式,参数只需依次跟在脚本名后,以空格隔开:

python3 task.py upload 20261031 --verbose

在 Python 代码中,可以通过内置模块 sys.argv 获取参数列表:

# task.py 内部解析示例
import sys

print("脚本文件名:", sys.argv[0])     # task.py
if len(sys.argv) > 1:
    print("接收到的参数列表:", sys.argv[1:])  # ['upload', '20261031', '--verbose']

2. 输出结果重定向到日志文件

默认情况下,脚本中的 print() 会输出到终端屏幕(标准输出 stdout)。使用重定向操作符可将其持久化到文件:

# 覆盖写入到 output.log
python3 script.py > output.log

# 追加模式写入到 output.log
python3 script.py >> output.log

# 同时将标准输出 (1) 与标准错误 (2) 全部保存到同一个日志文件
python3 script.py > run.log 2>&1

3. 脱离终端后台常驻运行(nohup 与 &)

当通过 SSH 连接到远程 Linux 服务器运行耗时脚本时,直接在前台执行一旦断开网络或关闭终端,进程就会收到 SIGHUP 挂断信号而终止。使用 nohup 与 & 组合可解决此问题:

nohup python3 -u server.py > server.log 2>&1 &

该命令包含四个关键要素:

  • nohup:让进程忽略挂断信号(SIGHUP),终端关闭后继续运行;
  • -u(unbuffered):强制 Python 将标准输出设置为无缓冲模式,确保 print 内容第一时间刷新到日志文件,避免因缓冲区未满而看不到实时日志;
  • > server.log 2>&1:将正常输出与报错日志重定向存储;
  • &:将任务放入后台执行,释放当前终端提示符供用户继续操作。
Linux终端运行Python脚本的基本命令
图 3:Linux 终端 I/O 重定向与后台常驻进程生命周期

五、常见执行错误表现与排查对照

执行 Python 脚本时遇到的报错,绝大部分源自环境、权限与格式问题。以下是四种最具代表性的现象及对应解决路径:

报错提示 根本原因 排查与修复方法
command not found: python 现代 Linux 默认未配置 python 别名,仅提供 python3。 改用 python3 运行;或安装 python-is-python3 软件包建立软链接。
bash: ./script.py: Permission denied 文件缺少可执行权限,或者所在挂载分区启用了 noexec。 运行 chmod +x script.py 补充执行权限;或退回使用 python3 script.py 运行。
/usr/bin/env: 'python3\r': No such file or directory 脚本在 Windows 环境下编辑保存,换行符为 CRLF(\r\n),导致 Linux 无法识别 Shebang。 执行 dos2unix script.py,或在 vim 中执行 :set ff=unix 转换换行符。
ModuleNotFoundError: No module named 'xxx' 当前运行所用的 Python 环境与第三方包安装的目标环境不一致。 检查是否处于正确的虚拟环境中,运行 source /path/to/venv/bin/activate 后再执行脚本。
Linux终端运行Python脚本的基本命令
图 4:Linux 终端运行 Python 脚本命令选择与场景决策树

六、基本命令速查总结

为了便于日常工作中快速查阅,核心执行命令归纳如下:

  • 常规运行:python3 script.py —— 适用 95% 的测试与开发场景,仅需读权限。
  • 脚本直调:chmod +x script.py && ./script.py —— 需脚本包含 #!/usr/bin/env python3,适合编写系统命令。
  • 带参运行:python3 script.py arg1 arg2 —— 内部通过 sys.argv 索引读取。
  • 后台挂起:nohup python3 -u script.py > app.log 2>&1 & —— 适合服务器常驻与耗时任务。
  • 查看后台进程:ps aux | grep script.py,停止运行使用 kill <PID>。

掌握以上基本命令及其背后的权限与路径逻辑后,在任何 Linux 发行版中运行和调试 Python 脚本都能做到从容应对、快速排障。

相关专题:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表