杰瑞科技汇

Linux下如何执行Python脚本文件?

假设你有一个名为 hello.py 的 Python 脚本文件,内容如下:

Linux下如何执行Python脚本文件?-图1
(图片来源网络,侵删)
# hello.py
import time
import sys
print("Hello, Linux!")
print("Script name is:", sys.argv[0])
print("Current time is:", time.ctime())
for i in range(3):
    print(f"Counting: {i}")
    time.sleep(1)
print("Script finished.")

直接使用 pythonpython3 命令(最常用、最推荐)

这是最直接、最安全的方法,因为它明确告诉系统使用哪个 Python 解释器来执行脚本。

基本语法

python3 your_script_name.py

或者如果你的系统默认 python 命令指向 Python 3:

python your_script_name.py

示例:

python3 hello.py

输出:

Linux下如何执行Python脚本文件?-图2
(图片来源网络,侵删)
Hello, Linux!
Script name is: hello.py
Current time is: Wed Oct 26 10:30:00 2025  # 时间会变
Counting: 0
Counting: 1
Counting: 2
Script finished.

传递参数给脚本

你可以在脚本名后面加上参数,这些参数会作为列表 sys.argv 传递给 Python 脚本。

示例:

python3 hello.py arg1 arg2 arg3

脚本修改后(为了更好地展示参数):

# hello.py
import sys
print(f"Number of arguments: {len(sys.argv)}")
print("Argument List:", str(sys.argv))

执行与输出:

Linux下如何执行Python脚本文件?-图3
(图片来源网络,侵删)
$ python3 hello.py arg1 arg2 arg3
Number of arguments: 4
Argument List: ['hello.py', 'arg1', 'arg2', 'arg3']

让脚本可执行(chmod +x

这种方法让脚本文件本身具有执行权限,你可以像执行一个普通的 Linux 命令一样直接运行它,而无需输入 python3

给脚本文件添加执行权限

使用 chmod +x 命令:

chmod +x hello.py

执行后,你可以用 ls -l 查看,文件权限会变成 -rwxr-xr-x,表示所有者、组和其他用户都有执行权限。

添加 "Shebang" 行(非常重要!)

为了让系统知道这个文件应该用哪个解释器来执行,你必须在脚本的第一行加上 "Shebang" 行。

  • #!/usr/bin/python3:这是最常见的 Shebang,它告诉系统使用 /usr/bin/python3 这个路径下的解释器。
  • #!/usr/bin/env python3更推荐 这种写法,它会去系统的环境变量 PATH 中查找 python3 命令,这使得脚本的可移植性更好,因为不同系统上 Python3 的安装路径可能不同(比如可能是 /usr/local/bin/python3)。

修改后的 hello.py 文件:

#!/usr/bin/env python3
# 你的 Python 代码
import time
import sys
print("Hello, Linux!")
print("Script name is:", sys.argv[0])
# ... (其余代码不变)

执行脚本

你可以直接在终端中运行它:

方式 A:使用相对路径或绝对路径

# 使用相对路径
./hello.py
# 使用绝对路径
/path/to/your/hello.py

注意:如果你直接输入 hello.py,系统可能找不到它,除非你把当前目录()添加到 PATH 环境变量中(不推荐)。

方式 B:将脚本移动到 PATH 中的目录(如 /usr/local/bin

如果你想让这个脚本在任何地方都能像命令一样直接调用(hello-world),可以这样做:

  1. 重命名脚本,去掉 .py 后缀(可选,但更符合命令习惯):
    mv hello.py hello-world
  2. 给它执行权限:
    chmod +x hello-world
  3. 移动到 PATH 中的一个目录,/usr/local/bin
    sudo mv hello-world /usr/local/bin/
  4. 现在你可以从任何地方直接执行它:
    hello-world

使用 import 模块的方式执行(适用于开发调试)

这种方法并不直接“运行”脚本,而是将脚本作为一个模块导入到 Python 解释器中,这在开发调试时非常有用。

使用 -m 标志

-m 标志会将一个模块或包作为脚本来运行,对于你自己的脚本,你需要确保它是一个有效的模块(即,它所在的目录可以被 Python 找到)。

示例:

假设你的 hello.py 在当前目录下。

python3 -m hello

注意

  • 命令后面是模块名,不带 .py 后缀。
  • 脚本中的 sys.argv[0] 会显示为 -m,而不是文件名。
  • 这种方式在执行项目中的测试框架(如 pytest)或管理工具(如 django-admin)时非常常见。

在交互式 Python 解释器中执行

这种方法适用于快速测试一小段代码,不适用于完整的脚本。

  1. 首先启动 Python 解释器:
    python3
  2. 然后使用 exec() 函数并读取文件内容:
    >>> exec(open('hello.py').read())

    或者更简洁的 exec() 语法(Python 3.6+):

    >>> exec(open('hello.py').read())

输出:

Hello, Linux!
Script name is: hello.py
Current time is: Wed Oct 26 10:30:00 2025
Counting: 0
Counting: 1
Counting: 2
Script finished.
>>>

总结与对比

方法 命令示例 优点 缺点 适用场景
直接调用解释器 python3 hello.py - 最清晰,明确指定了解释器
- 最安全,不受系统默认 Python 版本影响
- 适合所有情况
- 每次都要输入 python3 日常开发、生产环境部署、跨平台脚本
设置可执行权限 ./hello.py (需 chmod +x 和 Shebang) - 最方便,像普通命令一样执行
- 脚本可移植性好(配合 env
- 需要修改文件本身(加 Shebang)
- 需要设置文件权限
需要频繁执行的脚本、工具脚本、部署脚本
作为模块执行 python3 -m hello - 符合 Python 模块化思想
- 与标准工具(如 pytest)用法一致
- sys.argv 行为不同
- 需要模块化结构
开发测试、执行项目中的管理模块
交互式解释器 >>> exec(open('...').read()) - 适合快速调试、测试片段代码 - 不适合完整脚本
- 会阻塞交互式会话
在 Python Shell 中快速测试脚本内容

最佳实践建议

  1. 对于初学者和日常使用:强烈推荐方法一 (python3 script.py),它简单明了,不容易出错。
  2. 当你需要创建一个可重用的命令行工具时:使用方法二,记得用 #!/usr/bin/env python3 作为 Shebang,并把脚本放到 PATH 中,这样会非常专业和方便。
  3. 在项目开发中方法三 (python3 -m my_module) 是一种非常好的实践,尤其是在使用 pytestunittest 等测试框架时。
  4. 避免:不要为了省事而将 python3python 命令硬编码到 Shebang 中(如 #!/usr/bin/python3),优先使用 #!/usr/bin/env python3 以提高兼容性。
分享:
扫描分享到社交APP
上一篇
下一篇