基础调用方法
-
使用Python解释器直接运行
在终端执行,适用于所有Python版本:python3 脚本名.py # 显式指定Python3 python 脚本名.py # 若系统默认Python为2.x,需避免使用
关键参数:
-c "代码"
:直接执行单行代码(如python3 -c "print('Hello')"
)-m 模块名
:以模块形式运行(如python3 -m http.server
启动Web服务)
-
通过Shebang行自动调用
在脚本首行添加解释器路径,使脚本可独立执行:#!/usr/bin/env python3 # 推荐:自动查找环境中的python3 #!/usr/bin/python3 # 固定路径(不灵活)
后续操作:
chmod +x 脚本名.py # 添加可执行权限 ./脚本名.py # 直接执行
高级场景与技巧
-
后台运行 & 日志输出
- 保持脚本后台运行并记录日志:
nohup python3 脚本名.py > output.log 2>&1 &
nohup
防止进程退出,2>&1
将错误输出重定向到标准输出。
- 保持脚本后台运行并记录日志:
-
虚拟环境调用
避免依赖冲突,使用venv
或virtualenv
:python3 -m venv myenv # 创建虚拟环境 source myenv/bin/activate # 激活环境 python3 脚本名.py # 在隔离环境中运行
-
传递参数与处理结果
- 命令行传参(脚本内通过
sys.argv
获取):python3 脚本名.py 参数1 参数2
- 获取输出(用于其他命令):
result=$(python3 -c "print(1+1)") echo "结果为 $result"
- 命令行传参(脚本内通过
系统级集成方法
-
加入系统路径全局调用
将脚本放入系统路径(如/usr/local/bin/
):sudo cp 脚本名.py /usr/local/bin/myscript # 复制并重命名 sudo chmod +x /usr/local/bin/myscript # 添加权限 myscript # 任意位置直接执行
-
定时任务(Cron)
通过crontab
定时执行:crontab -e # 添加行(每天8:30运行): 30 8 * * * /usr/bin/python3 /路径/脚本名.py
-
系统服务(Systemd)
创建服务文件/etc/systemd/system/myscript.service
:[Unit] Description=My Python Service [Service] ExecStart=/usr/bin/python3 /路径/脚本名.py Restart=on-failure [Install] WantedBy=multi-user.target
启用服务:
sudo systemctl daemon-reload sudo systemctl start myscript
故障排查与安全实践
-
常见问题解决
- 权限不足:
chmod +x 脚本名.py
- Python版本错误:显式使用
python3
或#!/usr/bin/env python3
- 依赖缺失:在虚拟环境中
pip install -r requirements.txt
- 权限不足:
-
安全建议
- 避免使用
root
运行脚本,必要时用sudo
限定权限 - 检查用户输入,防止注入攻击(如
os.system()
中过滤参数) - 定期更新Python及依赖库(
pip list --outdated
)
- 避免使用
Linux调用Python脚本的核心在于权限管理、环境隔离和路径配置,根据需求选择合适方法:
- 快速测试 → 直接
python3 脚本名.py
- 生产部署 → 虚拟环境 + Systemd服务
- 自动化任务 → Cron定时执行
引用说明基于Python官方文档(docs.python.org)、Linux man手册及开源社区最佳实践(如Stack Overflow),操作前建议备份数据,关键操作可在测试环境验证。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/5236.html