You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python交互模式及脚本执行时自动运行指定导入代码?

解决Python自动加载Rich Pretty打印的两种场景问题

问题根源

你之前设置的别名alias python='python3 -i /path/to/startup.py'仅在无参数的交互模式下有效,原因是:

  • -i参数会强制Python在执行任何代码后进入交互式shell
  • 当传递脚本参数(如python myscript.py)时,myscript.py会被当作startup.py的命令行参数,而非要执行的目标脚本,导致脚本无法正常运行

可行解决方案

方案一:用Shell函数区分交互/脚本模式

直接替换~/.bashrc中的原有别名,添加以下Shell函数:

python() {
    if [ $# -eq 0 ]; then
        # 无参数:进入交互模式并加载startup.py
        python3 -i /path/to/startup.py
    else
        # 有参数:先执行startup代码,再运行目标脚本并传递后续参数
        python3 -c "from rich import pretty; pretty.install(); exec(open('$1').read())" "${@:2}"
    fi
}

方案二:结合PYTHONSTARTUP环境变量与Shell函数

这种方式更符合Python官方推荐的启动脚本配置:

  1. 先在~/.bashrc中添加环境变量(仅作用于交互模式):
export PYTHONSTARTUP="/path/to/startup.py"
  1. 再添加Shell函数处理脚本运行场景:
python() {
    if [ $# -ne 0 ]; then
        # 运行脚本:先加载startup.py,再执行目标脚本并传递参数
        python3 -c "import sys; exec(open('$PYTHONSTARTUP').read()); exec(open('$1').read())" "${@:2}"
    else
        # 无参数:直接进入交互模式(自动加载PYTHONSTARTUP)
        python3
    fi
}

生效步骤

  1. 保存~/.bashrc文件
  2. 在终端执行source ~/.bashrc让配置立即生效

验证方法

  • 交互模式:输入python,进入shell后直接打印字典(如print({"a":1, "b":[2,3]})),能看到Rich格式化的输出
  • 脚本模式:运行python myscript.py,脚本中所有打印输出会自动应用Rich的pretty格式化

内容的提问来源于stack exchange,提问作者epistoteles

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 13:15:06