windows 系统安装 python 的最好方式也许就是不安装

一、 核心问题

目前在windows机器上面安装python,去python官网下载下来的安装文件不是具体的某一个版本的python,而是一个叫做“python-manager-25.0.msix”东西 这个东西被称作为“python install manager” 并且后面这种方式安装python将成为windows系统安装python的主流方式,官网原文如下:

The Python install manager for Windows is our tool for installing and managing runtimes. The traditional executable installer will stop being released with Python 3.16 As well as the files below, the Python install manager can be installed using the Microsoft Store app. For most users, this is the recommended approach.

从上面这段描述来看 通过python install manager将成为日后的主流方案,但是当你通过这种方式来安装完python之后,你大概率会遇到两个问题:

  • pip 命令无法使用:虽然 python -V 正常,但输入 pip 报错。 原因:Python 安装目录下的 Scripts 文件夹没有添加到系统环境变量 Path 中。
  • 多版本切换困难 当你使用python -V 命令检查系统当前在用的python版本时默认会是当前最新的版本,怎么才能动态切换系统的python版本,变成一个需要亟待解决的问题。
  • py命令与python命令 当你在命令行中执行 python -V 和 py -V 时你会发现两个命令竟然输出的东西一模一样,那么这个py命令和python命令的关系又是怎样的呢?

本文将主要介绍这些问题的解决方案,并对关键问题进行说明。

二、 基础概念解析

1. python vs py 命令

  • python (工人):直接调用 python.exe。它依赖环境变量 PATH,谁排在前面就启动谁,不灵活,容易版本冲突。
  • py (工头):Windows 独有的 Python 启动器。它不依赖 PATH,而是扫描注册表。
  • py:自动启动最新版。
  • py -3.8:强制启动 3.8 版本。 结论:在 Windows 命令行里,可以用 py 全面替代 python。但是也仅限是windows环境

下面几个py命令需要做重点关注

# 列举当前安装了哪些版本的python,标记 * 符号的是当前正在使用的版本 py --list # 使用3.12版本的python运行指定脚本 py -V:3.13 xxx.py # 上面的这个命令可以简写为 py -3.13 xxx.py

可以发现py命令是严格区分版本的 ,并且截止目前py 还没有那种可以动态切换当前正在使用的python版本的命令,官方的想法应该是想让我们时刻都知道命令和版本之间的对应关系。

此外 当你使用 python install manager 安装python时 默认会把python安装到C:\Users\你的用户名\AppData\Local\Python下面,还会把下图中的 bin 文件夹自动添加到系统环境变量(当前用户的Path环境变量下面)中:

image.png

2. 怎么运行pip来安装依赖呢?

假定我现在需要使用 pip 来安装 uv ,现在则需要使用下面的命令:

py -m pip install uv

这比我们之前直接安装指定版本的python的时候需要额外增加一个前缀 py -m 这个 -m 参数的含义是告诉 Python 不要运行文件,而是去已安装的库里找叫 pip 的模块并运行它。

通过上面的命令安装uv之后你会发现两个问题:

  • 直接在终端使用uv 直接报错,提示找不到可运行文件

其实这个很好理解,使用上面的文件会直接把uv放到当前正在运行的python安装目录的Script目录下,这个目录还不在系统Path环境变量下,自然提示找不到。

image.png

这里额外说明下如果你使用下面的命令安装,则会把uv安装到指定版本的python安装目录的Script目录下

py -3.13 -m pip install uv

回到开始的问题 这时候运行uv提示找不到路径怎么办?

第一种方式自然是把这个路径给添加到环境变量里面,这种方案可行,但是并不推荐,下面介绍最适合windows系统安装uv命令的方案

3.安装uv的最佳方案

安装uv的最佳方案是通过下面的命令安装,而不要去使用pip来安装

# Windows powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"

通过这种方式安装uv之后,会自动添加环境变量,一行命令即可畅快使用uv来做依赖管理,以及虚拟环境创建。

总结:其实你可能不需要在windows电脑手动安装python

其实对于windows电脑,你可能只需要安装uv即可。只安装uv会有下面的几个好处

  • 系统零污染: 你的 控制面板 -> 卸载程序 列表里干干净净,没有那一堆 "Python 3.x", "Python Launcher" 之类的东西。
  • 版本自由: 你想用 Python 3.8?uv run --python 3.8。 想用 Python 3.13?uv run --python 3.13。 uv 会把这些版本都管理得井井有条,用完甚至可以一键清理。

唯一的改变就是你在powershell上面无法使用python命令 需要学会把 python main.py 改为 uv run main.py

Read more

HarmonyOS6半年磨一剑 - RcImage组件核心架构与状态管理机制

HarmonyOS6半年磨一剑 - RcImage组件核心架构与状态管理机制

文章目录 * 前言 * 项目简介 * 核心特性 * 开源计划 * rchoui官网 * 第一章: 组件架构设计 * 1.1 ComponentV2 装饰器体系 * 1.2 参数系统分层设计 * 1.3 类型系统设计 * 第二章: 状态管理机制 * 2.1 加载状态机设计 * 2.2 状态转换逻辑实现 * 2.3 预览状态管理 * 第三章: 生命周期管理 * 3.1 组件生命周期钩子 * 3.2 状态更新触发机制 * 第四章: 事件系统设计 * 4.1 事件分类与职责 * 4.2 事件触发时机与顺序 * 4.3 事件参数设计 * 第五章: 渲染优化策略

By Ne0inhk
自go-zero走进微服务

自go-zero走进微服务

在我最初看来,go-zero 最核心的价值体现在两点: 1、使用 .api 定义接口协议(Contract First) 2、使用 goctl 自动生成工程骨架,让开发者专注于业务逻辑 在使用中,我发现 go-zero 的核心并不止于脚手架, 而是一整套围绕“可维护性、可扩展性”的工程化约束体系。 后来真正进入项目后,我才逐渐意识到: RPC(zrpc + etcd)才是 go-zero 支撑微服务架构的第二个关键支点。 而中间件、熔断、限流、链路最终,是第三个核心支点。 参考:go-zero文档 配置环境 安装 goctl(go-zero 的脚手架) go install github.com/zeromicro/go-zero/tools/goctl@

By Ne0inhk
告别亡羊补牢!金仓SQL防火墙,99.99%精准拦截恶意注入

告别亡羊补牢!金仓SQL防火墙,99.99%精准拦截恶意注入

开发留的坑,数据库来填!金仓数据库SQL防火墙,精准拦截99.99%的恶意SQL 在数字化转型的浪潮中,数据已成为企业的核心资产。然而,SQL注入攻击如同潜伏在阴影中的“不速之客”,时刻威胁着数据库的安全。即使开发团队严守预编译、输入过滤等防线,遗留代码、第三方组件的漏洞或人为疏忽仍可能给攻击者可乘之机。难道只能被动挨打、疲于补漏吗? 金仓数据库(KingbaseES)V009R002C014版本内置的SQL防火墙,给出了一种更聪明的答案——从数据库内核层构建主动防御,让恶意SQL无处遁形,安全团队从此告别“亡羊补牢”,真正实现“规则先行”。 一、SQL注入:那个偷偷溜进房子的“不速之客” SQL注入的原理并不复杂,却极其致命:攻击者将恶意代码伪装成正常输入,欺骗数据库执行非预期操作。 举个简单的例子:一个登录表单中,用户在用户名栏输入 ' OR '1'='1,后台的查询语句可能就变成了: SELECT * FROM users

By Ne0inhk