Win10 -> Win11 升级机制 导致应用不可用

一、问题

我今天刚升级了系统(从win10到win11)现在的问题是:我在vscode,kiro等软件想使用anconda环境,使用conda init命令显示:

复制代码
Unable to create process using 'H:\myMinAnconda\python.exe H:\myMinAnconda\Scripts\conda-script.py --version'

二、原因

  • Win10 -> Win11 升级机制:升级过程中,系统会迁移用户文件,但有时会破坏可执行文件的数字签名关联,或者改变了对非系统盘(如 H 盘)程序的执行策略。

  • Conda 的硬编码 :Conda 的激活脚本 (conda.ps1, activate.bat) 内部硬编码了 Python 的绝对路径。当底层的 python.exe 因为系统升级变得"不可执行"时,脚本调用它就会报 Unable to create process

三、解决

1、现在的解决思路是:直接下载最新的 Miniconda 安装包,覆盖安装H:\myMinAnconda。这不会删除我们之前安装的库(如 pymilvus, pandas 等),只会替换核心的执行文件(python.exe, conda.exe)和脚本,这是解决"此应用无法运行"最彻底的方法。

另外==》

1)因为我原本就在用 Miniconda,为了保持环境一致性(特别是为了保留你现有的包和环境),必须使用相同的发行版进行覆盖安装。所以我选择的是右侧的 Miniconda

2)Miniconda (右侧):只包含 Python、Conda 和少量核心依赖。安装包小(约 80MB),下载快,安装快。它遵循"按需安装"原则。

2、做法:

访问 Miniconda 官网下载页:https://docs.anaconda.com/miniconda/

下载 Windows PowerShell 64-bit 的最新安装包(文件名类似 Miniconda3-latest-Windows-x86_64.exe)。

四、再问题

1、问题:

执行上面的操作之后,使用 conda --version 之后发现:

覆盖安装失败了,或者你运行的安装程序并没有真正覆盖掉损坏的文件。

既然"覆盖安装"没有自动替换掉坏文件(可能是因为文件被占用、权限锁定或安装包逻辑判断失误),我们需要手动强制清理后再安装。

2、做法:

1)改名旧的myMinAnconda 文件夹

既然旧的 python.exe 已经坏了且删不掉(或者不敢删),我们把它改名,让系统彻底忘掉它,然后让新安装程序以为这是一个全新目录。

  1. 打开 文件资源管理器 ,进入 H: 盘。

  2. 找到 myMinAnconda 文件夹。

  3. 右键点击 myMinAnconda -> 重命名

  4. 将其改名为 myMinAnconda_OLD (或者 myMinAnconda_Bak)。

2)重新安装 Miniconda

  1. 再次运行你刚才下载的 Miniconda 安装程序 (Miniconda3-latest-Windows-x86_64.exe)。

  2. 一路点击 Next,直到 Installation Type (选择路径) 界面。

  3. 关键操作

    • 在路径框中,手动输入 原来的路径名:H:\myMinAnconda

    • 注意 :因为你刚才把旧文件夹改名了,所以 H:\myMinAnconda 现在是一个不存在的路径。

    • 安装程序会提示:"该文件夹不存在,是否创建?" -> 点击 是 (Yes)

  4. 继续安装,选项保持之前的建议(不勾选 Add to PATH)。

  5. 等待安装完成。验证方式如下:

复制代码
(base) PS C:\WINDOWS\system32> H:\myMinAnconda\python.exe --version
Python 3.13.12

3)迁移 site-packages (你的库): 你需要把旧文件夹里的第三方库复制到新文件夹。

  • 源路径:H:\myMinAnconda_OLD\Lib\site-packages

  • 目标路径:H:\myMinAnconda\Lib\site-packages

操作方法

  • 打开 H:\myMinAnconda_OLD\Lib\site-packages

  • 全选所有文件和文件夹 (Ctrl + A)。

  • 复制 (Ctrl + C)。

  • 打开 H:\myMinAnconda\Lib\site-packages

  • 粘贴 (Ctrl + V)。

  • 如果有提示文件冲突(比如 pip, setuptools 等核心库),选择 跳过 (Skip)保留目标文件 ,不要覆盖新安装的核心库。只覆盖那些你后来安装的库(如 pymilvus, numpy 等)。

五、重新初始化

  1. 关闭所有终端。

  2. 管理员身份打开新的 PowerShell。

  3. 运行:

    python 复制代码
    conda init powershell

    (此时应该能正常运行了,因为 python.exe 已经是新的了)

  4. 关闭终端,重新打开。

  5. 测试你的项目:

    复制代码
    cd H:\mypythoncode\milvus_test
    # 如果你之前有特定环境,尝试激活
    conda activate <你的环境名> 
    # 或者直接测试 python
    python -c "import pymilvus; print('Milvus OK')"

六、又一问题

刚才咱把把旧环境(假设是 Python 3.11 或 3.12)的 site-packages 直接复制到了新环境(Python 3.13)。

pymilvus 的纯 Python 代码(.py 文件)复制过去后正常工作了,因为 Python 代码是通用的。

但是,orjson、grpcio、numpy 这些库的核心部分是二进制包(.pyd 文件)。

这些 .pyd 文件是在旧 Python 版本下编译的。它们的内部结构(ABI - 应用程序二进制接口)与新 Python 3.13不匹配。

当 Python 3.13 试图加载这些为旧版本编译的 .pyd 文件时,发现"接口对不上"或者"找不到符号",于是抛出 ModuleNotFoundError 或 ImportError。

==》解决方案是重装这些wheel文件:

python 复制代码
python -m pip install --upgrade --force-reinstall --no-cache-dir numpy scipy pandas orjson grpcio grpcio-tools protobuf

导出环境列表

为了避免下次换电脑或重装系统时再经历这种"复制粘贴修 bug"的痛苦,请养成导出环境列表的习惯。

在项目目录 H:\mypythoncode\milvus_test 下,运行以下命令生成一个"配方文件":

复制代码
pip freeze > requirements.txt

这个 requirements.txt 记录了当前所有库的确切版本。

下次无论在哪台电脑,只要运行 pip install -r requirements.txt,就能瞬间还原一个一模一样的环境,完全不需要手动复制文件夹。

  1. 在新机器/新路径安装一个新的 Miniconda/Anaconda。

  2. 创建新环境:conda create -n myenv python=3.13

  3. 激活环境:conda activate myenv

  4. 安装包:pip install -r requirements.txt (或者 conda install <包名>)

Python 包管理中"源码"与"二进制"的区别

大多数流行的科学计算库(NumPy, Pandas, TensorFlow, PyTorch, Milvus 客户端等)为了性能,底层都用 C/C++/Rust 重写过,所以它们必须使用二进制包。

怎么区分一个库是源码还是二进制库呢?

  • 看文件后缀

    • 如果你在 site-packages 里看到 .pyd (Windows) 或 .so (Linux/Mac) 文件,那就是二进制组件

    • 如果只有 .py 文件,那通常是纯 Python 库(如 requests, flask 的核心部分),这种库通常可以直接复制而不报错。

  • 看 Pip 安装时的输出

    • 如果看到 Downloading xxx.whl 并瞬间完成安装 →→ 二进制包

    • 如果看到 Building wheel for xxx... 或者 Running setup.py install 并且转圈圈很久 →→ 正在从源码编译

总结

本文介绍了升级系统之后,原先的anconda环境不可用从而引发的深度的解决。

1、首先重新下了最新的 Miniconda 安装包,覆盖到原来的 Miniconda 路径。后来发现覆盖无效;

于是便将旧的路径文件夹重命名,然后再重新下;以及将原来旧文件夹的第三方库都复制到新的文件夹中;

2、又因为其中的wheel文件的编译器不一样导致无法用,从而只能手动的去重装wheel文件。进而提出,可以用pip freeze > requirements.txt生成配置文件来避免下次同样的问题。、

3、又讨论了 Python 包管理中"源码"与"二进制"的区别 以及怎么区分一个库是源码还是二进制库。

相关推荐
私人珍藏库2 个月前
[Windows] 桌面整理 Desk Tidy v1.2.3
windows·工具·软件·win·多功能
私人珍藏库2 个月前
[吾爱大神原创工具] Excel 数据批量转 Word 工具(2026年最新版)
word·excel·工具·软件·win
私人珍藏库2 个月前
[Windows] EndNote 2025.1.19456 汉化版
windows·工具·软件·win·汉化
私人珍藏库2 个月前
[Windows] 文件管理大师 FileMasterPro v1.2.5
windows·文件管理·工具·软件·win
私人珍藏库2 个月前
[Windows] 正牌STEAM小黄鸭(给游戏,视频帧数翻倍更丝滑) Lossless Scaling 3.2.2 免安装版
windows·工具·软件·win
私人珍藏库2 个月前
[Windows] 图像编辑工具 PhotoDemon v2025.12
工具·软件·win·photodemon
私人珍藏库2 个月前
[Windows] 视频剪辑编辑软件中文绿色版ShotCut v25.12.31
pc·视频·工具·软件·win·辅助
私人珍藏库3 个月前
[Windows] MusicPlayer2 V2.78
windows·音视频·工具·软件·win·music
私人珍藏库3 个月前
[Windows] Windows 超级管理器 v9.53
windows·工具·软件·win·管理器