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

深度优先搜索(DFS)详解及C++实现

深度优先搜索(DFS)详解及C++实现 一、什么是深度优先搜索(DFS)? 深度优先搜索(Depth-First Search,简称DFS)是一种用于遍历或搜索树或图的算法。其核心思想是:尽可能深地搜索图的分支,当某条分支搜索到尽头无法继续前进时,回溯到上一个节点,再选择另一条未探索的分支继续搜索,直到所有节点都被访问完毕。 可以用一个生动的比喻理解DFS:想象你走进一个迷宫,每次遇到岔路时,随机选择一条路一直走,直到走到死胡同(无法继续前进),然后沿原路返回上一个岔路,选择另一条未走过的路继续探索,直到找到出口或遍历完整个迷宫。 DFS的实现通常依赖栈(Stack)这种数据结构(手动实现时),或者直接利用递归函数调用栈(更简洁,也是最常用的方式)。递归实现的本质是将每次的节点访问和回溯过程交给函数栈来管理,无需手动维护栈结构。 二、DFS的核心特性与适用场景 1. 核心特性 * 不撞南墙不回头:优先深入探索当前分支,而非横向遍历同级节点; * 回溯思想:探索到尽头后,返回上一节点继续探索其他分支,需要记录节点访问状态(避免重复访问); * 空间复杂度:取决于

By Ne0inhk
《算法题讲解指南:优选算法-滑动窗口》--13 水果成篮

《算法题讲解指南:优选算法-滑动窗口》--13 水果成篮

🔥小叶-duck:个人主页 ❄️个人专栏:《Data-Structure-Learning》 《C++入门到进阶&自我学习过程记录》《算法题讲解指南》--从优选到贪心 ✨未择之路,不须回头 已择之路,纵是荆棘遍野,亦作花海遨游 目录 13 水果成篮 题目链接: 编辑 题目示例: 解法(滑动窗口): 算法思路: 算法流程: C++代码演示:方法一(使用容器) C++代码演示:方法二(用数组模拟哈希表) 算法总结及流程解析: 结束语 13 水果成篮 题目链接: 题目示例: 解法(滑动窗口): 算法思路:       研究的对象是一段连续的区间,可以使用【滑动窗口】思想来解决问题。       让滑动窗口满足:窗口内水果的种类只有两种。       做法:右端水果进入窗口的时候,

By Ne0inhk
【CVPR2025 DEIM】超详细!手把手训练自己的数据集教学:从源码下载,配置虚拟环境,准备数据集、训练、验证、推理测试 ,实现0到1的完整教学过程。本文在win系统上训练,最强实时目标检测算法!

【CVPR2025 DEIM】超详细!手把手训练自己的数据集教学:从源码下载,配置虚拟环境,准备数据集、训练、验证、推理测试 ,实现0到1的完整教学过程。本文在win系统上训练,最强实时目标检测算法!

🔥DEIM创新改进目录:全新DEIM有效涨点改进目录 | 包含各种最新顶会顶刊:卷积模块、注意力模块、特征融合模块、有效特征聚合提取模块,上采样模块、下采样模块,二次创新模块、独家创新,特殊场景检测等最全大论文及小论文必备创新改进点 🔥全新DEIM创新改进专栏地址:全网独家DEIM创新改进高效涨点+永久更新中(至少500+创新改进🗡剑指小论文、大论文)+小白也能简单高效跑实验+容易发各种级别小论文 本文目录 一、下载CVPR2025 DEIM官方源码  二、创新DEIM项目虚拟环境 第一步创建一个自己的虚拟环境: 第二步进入到自己的虚拟环境: 第三步:安装pytorch,建议不要安装太新版本 第四步:直接复制以下所有命令到控制台“终端里面粘贴回车运行” 三、准备自己的数据集和配置自己数据集步骤 3.1 本文以训练Visdrone2019无人机数据集为例 3.2 将自己数据集放到datasets文件夹里 3.3 配置数据步骤 四、使用DEIM训练自己的数据集 4.1

By Ne0inhk
《算法闯关指南:优选算法--前缀和》--31.连续数组,32.矩阵区域和

《算法闯关指南:优选算法--前缀和》--31.连续数组,32.矩阵区域和

🔥草莓熊Lotso:个人主页 ❄️个人专栏: 《C++知识分享》《Linux 入门到实践:零基础也能懂》 ✨生活是默默的坚持,毅力是永久的享受! 🎬 博主简介: 文章目录 * 前言: * 31. 连续数组 * 解法(前缀和+哈希表): * 算法思路: * C++算法代码: * 算法总结&&笔记展示: * 32. 矩阵区域和 * 解法: * 算法思路: * C++算法代码: * 算法总结&&笔记展示: * 结尾: 前言: 聚焦算法题实战,系统讲解三大核心板块:优选算法:剖析动态规划、二分法等高效策略,学会寻找“最优解”。 递归与回溯:掌握问题分解与状态回退,攻克组合、排列等难题。 贪心算法:理解“

By Ne0inhk