·
日常编程 ·
211213
Windows 的 py 启动器默认应调用系统最新 Python,但实际可能因注册表配置滞后而指向旧版本;可通过 py -0p 查看已注册版本,并用 py -3.12 --default 显式设置默认版本。
windows 系统中 `py` 启动器默认应调用系统最新 python,但实际可能因注册表配置滞后而指向旧版本;可通过 `py -0p` 查看已注册版本,并用 `py -3.12 --default` 显式设置默认版本。
在 Windows 上,py 是官方提供的 Python 启动器(Python Launcher for Windows),其设计目标之一就是简化多版本共存环境下的调用——例如无需修改 PATH,仅通过 py -3.12 或 py -3.8 即可精确启动对应版本。但需注意:py(无参数)的行为并不由“系统中安装的最高版本号”自动决定,而是依赖 Windows 注册表中 py 启动器所记录的“默认版本”配置。这解释了为何你观察到:
$ py --version # 输出 Python 3.8.10(当前注册的默认版本)
$ python3 --version # 输出 Python 3.12.2(该解释器可能通过其他方式(如直接安装、conda、或手动 PATH 配置)注册为 python3 命令)
✅ 查看所有已注册的 Python 版本
运行以下命令,可列出 py 启动器识别并注册的所有 Python 安装及其路径:
py -0p
典型输出示例:
-V:3.12 * C:\Users\Alice\AppData\Local\Programs\Python\Python312\python.exe
-V:3.8 C:\Users\Alice\AppData\Local\Programs\Python\Python38\python.exe
其中 * 表示当前默认版本。若 3.12 未带星号,说明它尚未被设为默认。
✅ 将最新版本设为 py 默认启动项
只需一条命令即可更新注册表中的默认配置(以 Python 3.12 为例):
elasticsearch-9.4.0 win
PHP中文网提供Elasticsearch 9.4.0 Windows 版本压缩包下载解压即用,内置 OpenJDK 无需额外配置 Java 环境。该版本重磅推出原生 Prometheus 支持、正式版 Elastic Workflows 以及基于 NVIDIA cuVS 的 GPU 加速向量索引,大幅提升 AI 检索与可观测性能力。建议前往官网下载,快速体验极速搜索与强大的数据分析功能。
py -3.12 --default
执行后再次验证:
py --version # 应输出 Python 3.12.2
py -0p # 确认 `*` 已移至 3.12 条目
⚠️ 注意事项:
- 该命令需在 具有写入注册表权限的命令行(普通 CMD/PowerShell 即可,无需管理员权限) 中运行;py 启动器自身管理用户级注册表项(HKEY_CURRENT_USER\Software\Python\Launcher\),不涉及系统级修改。
- 若 py -3.12 报错 Unknown version,请先确认 py -0p 是否列出该版本——未列出说明安装时未勾选“Add Python to PATH”或未启用“Associate files with Python”选项,此时需重新运行 Python 安装程序并勾选对应选项,或手动使用 py -3.12 -m pip install ... 临时调用。
- python3 命令并非 Windows 原生命令,通常由第三方环境(如 Git Bash、WSL、Miniconda 或某些 Python 安装包)提供,与 py 启动器无直接关联,因此二者版本不一致属正常现象。
通过以上步骤,你即可精准控制 py 的默认行为,确保开发脚本(如 py script.py)始终基于期望的 Python 版本运行,兼顾兼容性与现代特性支持。
Flask-Admin不能直接当CMS用,但可快速搭建CMS管理后台骨架;它仅提供模型驱动的CRUD界面,不包含前端展示、权限分级、内容路由和模板渲染等CMS核心功能。 Flask-Admin 能不能直接当 CMS 用? 不能,但可以快速搭出 CMS 的管理后台骨架。Flask-Admin 本质是模型驱动的 CRUD 管理界面,不提供前端展示、用户权限分级、内容路由、模板渲染等 CMS 核心能力。...
f-string是Python 3.6+引入的字符串格式化语法,3.5及更早版本不支持,会直接报SyntaxError;需通过python3 --version或sys.version确认解释器版本,.format()和%格式化是兼容旧版本的替代方案。 f-string 是 Python 3.6 才正式加入的语法,3.5 及更早版本根本无法解析 f"..." 这种写法,会直接报 SyntaxErr...
精准定位所有__pycache__目录应使用find . -type d -name '__pycache__',其中-type d限定为目录类型,-name精确匹配大小写敏感的固定名称,引号防止shell展开,避免误用-iname或通配符。 find 命令怎么精准定位所有 __pycache__ 目录 默认情况下,find 会递归遍历整个目录树,但容易误删或漏删——关键在指定类型和路径模式。__...
本文详解python cryptography.x509 构建多级证书链(根→中间→终端)时,openssl验证报错 unable to get issuer certificate 的真实原因——并非代码缺陷,而是证书链加载方式错误;重点阐明 -untrusted 参数的关键作用及完整验证流程。 本文详解python cryptography.x509 构建多级证书链(根→中间→终端)时,ope...
SimpleImputer是scikit-learn中处理缺失值的核心工具,自1.2版本起Imputer已移除,且strategy参数必须显式指定;支持mean、median(仅数值)、most_frequent(数值/类别)、constant(需fill_value)四种策略;不支持混合数据类型统一填充,须分列处理;fit_transform仅限训练集,测试集只能transform,否则导致评估...
platform.dist() 在 Python 3.8 中已被彻底移除,调用将触发 AttributeError;因其依赖系统文件、结果不可靠且维护成本高,自 3.5 起弃用,3.8 物理删除;推荐使用 distro 库替代,它专为 Linux 发行版识别设计,支持 Python 3.6–3.12,提供 distro.id() 等清晰接口,但需注意 Alpine 等精简镜像兼容性及全环境部署。 ...
双栈结构更适合轻量级撤销队列,因其内存和逻辑更直接:仅存状态快照或增量变更,避免命令模式的类抽象与生命周期开销;对list/dict/数值等原子操作,浅拷贝+双栈即可覆盖90%场景,且undo/redo为O(1)。 为什么双栈结构比命令模式更适合轻量级撤销队列 双栈(undo_stack 和 redo_stack)在内存和逻辑上更直接:每次操作只存状态快照或简单变更描述,不需为每类操作定义新类。命...
升级Python前须确认当前版本及安装方式,官网安装包可无损升级但需勾选PATH和launcher选项,conda或venv环境应分别用conda install或重建虚拟环境,升级后需运行python -m ensurepip --upgrade修复pip并更新IDE解释器路径。 升级前先确认当前版本和安装方式 别急着下安装包,先搞清楚你现在的 python 是怎么来的——这直接决定后续操作是否...
不能删系统自带的Python 2.7,因其位于/System/Library/Frameworks/和/usr/bin/下,是macOS底层工具链依赖的关键组件;误删会导致softwareupdate、Xcode命令行工具等异常。 不能删,也不该删。 macOS 系统自带的 Python 2.7(位于 /System/Library/Frameworks/Python.framework)是系统底...
直接用pika发送任务会丢消息,是因为默认未启用发布确认、队列未持久化、消息未设delivery_mode=2;漏掉任一机制,RabbitMQ重启或消费者异常时消息即丢失。 为什么直接用 pika 发送任务会丢消息? 默认情况下,pika 的 channel.basic_publish() 不保证消息持久化,rabbitmq 重启或消费者异常退出时,未消费的消息直接丢失。这不是代码写错了,而是 r...