当前位置: 首页 > news >正文

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. 运行:

    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 -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 包管理中“源码”与“二进制”的区别 以及怎么区分一个库是源码还是二进制库。

http://www.jsqmd.com/news/486212/

相关文章:

  • 计科-计网4-数据链路层「整理」
  • 2026上门收购红木家具公司推荐指南 - 优质品牌商家
  • 金库合约Vault
  • 第四篇:Dubbo 本地存根 (Stub) 和 本地伪装 (Mock) 的核心总结
  • IBM与ETH联合开创AI视觉推理新范式
  • 哪家短信平台好?正规三网106短信服务商横评 - Qqinqin
  • 109. 天才ACM(二分、倍增
  • 大数据微服务治理:Eureka注册表同步机制剖析
  • 2026年3月山东青岛旅拍/婚纱照/全家福/女士写真/生日照公司实力测评 - 2026年企业推荐榜
  • 2026年全国学俄语机构哪家靠谱?专业可信 适配不同学习场景 适配各类人群 - 深度智识库
  • SQLMAP的安装和使用
  • 菜刀怎么选?这份菜刀推荐品牌请收好,王麻子凭百年匠心脱颖而出 - 速递信息
  • STM32 单片机 按键 非阻塞
  • 联合循环——11 厂用储能电池原理介绍
  • Ubuntu+PM2实现nohup.out日志实时网页监控(亲测可用)
  • 联合循环——12 电厂通讯系统简介
  • 2026风机行业标杆企业深度解析——以绍兴上虞英达风机有限公司为核心 - 深度智识库
  • 贝赛思入学考试辅导机构:全周期备考体系与升学辅导实践 - 品牌2026
  • 2026年GitHub最火的开源AI项目:除了OpenClaw还有这些宝藏
  • 2026年最新公众号排版模板网站亲测推荐 5个宝藏微信公众平台编辑器、微信公众号助手实测对比 - 鹅鹅鹅ee
  • 掌握SwiftIconFont前缀系统:13类图标字体的快速查找与调用秘籍
  • 2026年枕式包装机采购指南:从“设备买卖”到“价值共创”,这四家源头工厂凭什么领跑? - 深度智识库
  • 联合循环——13 智能电厂的发展
  • 2026年食品包装机厂家实力推荐智能智造适配多行业发展需求 - 深度智识库
  • 文章代码地址
  • 发短信平台哪家好?国内主流短信供应商推荐 - Qqinqin
  • Unity中实现从随机位置逐渐扩散的颜色渐变动画效果
  • SaaS短信系统哪家好?简单易上手的短信平台推荐 - Qqinqin
  • 联合循环——14 厂用电缆介绍
  • 提示工程架构师深度分享:智能推荐系统的迭代优化方法论