warning: 此文适用于技术实现的探讨,请在实际工作过程中灵活运用。必要时请手动回退包版本,以免因为包版本问题对生产环境造成破坏。
- 完整实现过程
完整实现过程适用于想快速实现批处理的朋友,我将详细介绍每个操作步骤,并附带脚本代码,并尽量避免可产生歧义的操作描述。
1.1 打开windows终端软件
可以同时按下 “windows” + “r” 键–> 输入cmd
。
1.2 进入桌面目录, 并创建bat文件
cd desktop
type nul > runpip.bat
notepad runpip.bat
1.3 复制粘贴以下内容:
@echo off
chcp 65001
setlocal enabledelayedexpansion
:: 升级pip
echo 升级pip
python -m pip install pip --upgrade -i https://pypi.tuna.tsinghua.edu.cn/simple
echo over!
:: 整pip install
echo 获取可升级的包
set num=0
for /f %%i in ('python -m pip list --outdated') do (
if !num! gtr 1 (
python -m pip install %%i --upgrade -i https://pypi.tuna.tsinghua.edu.cn/simple
)
set /a num=!num! + 1
)
echo over!
1.4 按下 “ctrl” + “s” 后再按下 “alt” + “F4” 保存退出。
1.5 回到 cmd 界面,输入如下:
.\runpip.bat
- 需要注意
技术细节的解析将围绕此bat脚本展开,而不对创建脚本的过程过多深入。脚本如下:
在其中有两个需要注意的点
- 首先是 for /f %%i in ('python -m pip list --outdated') do 这句,其中的 python -m... 语句要用单引号括起来,这被编译器识别为操作语句,否则编译器将便利当前目录寻找名为 "python -m..." 的文件。
- 其次就是我在代码中强调的延迟变量了,这算是bat操作中很抽象的一个点,需要加以注意。
- 脚本文件可扩展方向
此文件虽说实现了批处理所有的python包更新,但是没有给操作者提供可选择的空间,因此我们可以考虑扩展此程序,例如在包管理过程中添加数组操作,先打印数组,再选择要更新的包。