直接运行 .py 文件需确保 python 命令可用,否则报“command not found”;路径、Python 版本和入口逻辑是三大易错点,应先用 where/which 检查命令是否存在,再确认工作目录、Python 可执行路径及是否使用正确命令(如 python3 或 python -m)。

直接在命令行运行 .py 文件,只要 Python 已安装且环境变量配置正确,用 python script.py 就行 —— 不需要编译,不依赖 IDE,但路径、Python 版本和入口逻辑这三处最容易出错。
为什么 python script.py 报 “command not found” 或 “不是内部或外部命令”
这不是 Python 脚本的问题,是系统根本没找到 python 这个命令。Windows 常见于安装时没勾选 “Add Python to PATH”,macOS/Linux 可能装了 python3 但没建 python 软链。
- 先运行
where python(Windows)或which python(macOS/Linux)确认是否可定位 - 如果只返回
python3,就改用python3 script.py - Windows 安装器重装时务必勾选 “Add Python to PATH”,别跳过
- Mac 用户用 Homebrew 装的 Python,默认只有
python3,python命令需手动 alias 或用 pyenv 管理
python -m 和直接执行 python script.py 的区别在哪
关键在模块搜索路径(sys.path)不同:python script.py 把脚本所在目录加进 sys.path[0];而 python -m module_name 按照 Python 模块规则导入,要求模块在 PYTHONPATH 或已安装包路径中,且不能有 .py 后缀。
- 想运行当前目录下带相对导入的包?必须用
python -m mypackage.main,不能python mypackage/main.py -
python -m http.server 8000是标准用法,因为http.server是内置模块名,不是文件名 - 误写成
python -m script.py会报ImportError: No module named 'script.py'——-m后面不要带.py - 调试时用
python -v script.py可看模块加载过程,比直接执行多一层诊断信息
脚本开头的 #!/usr/bin/env python3 有用吗
只对类 Unix 系统(Linux/macOS)生效,Windows 命令行完全忽略它。它的作用是让文件变成可执行程序,省掉显式写 python3,但前提是你得给文件加执行权限,且系统能通过 env 找到 python3。
立即学习“Python免费学习笔记(深入)”;
- Linux/macOS 下:先
chmod +x script.py,再./script.py即可运行 - 路径必须是绝对路径或当前目录(
./),不能直接敲script.py—— 系统默认不查当前目录 - Windows PowerShell 或 CMD 中写这行毫无意义;WSL 里才起作用
- 如果用了
#!/usr/bin/env python,而系统只有python3,就会失败 —— 推荐明确写python3
真正卡住人的往往不是语法,而是当前工作目录在哪、你敲的到底是哪个 Python、以及脚本是不是被当普通文本打开了。多用 pwd/cd 确认位置,用 python -c "import sys; print(sys.executable)" 看清调用的是谁,比反复改代码更省时间。










