自由学习记录(157)

环境信息

  • 使用了 DotNet SDK 8.0
  • 使用了 Visual Studio 2022 (14.44.35224) 编译器。
  • 使用了 Unreal Build Accelerator (UBA) 本地加速器,总耗时约 148 秒

可以直接点击"运行"或者回到 Unreal Editor 界面,它应该会自动热重载(Live Coding)或者提示你代码已更新。

ETW (Event Tracing for Windows):这是 Windows 提供的一种性能跟踪机制。

"运行(Run)",本质上是 IDE 替你执行了一个指令,去启动虚幻引擎编辑器并自动加载你的项目。

它会加载你刚刚编译好的最新代码(DLL 文件)。

手动打开了一个 Editor 窗口,再从 Rider 点运行,这就没有必要了,rider的连接层

"锤子"图标(Build Solution / Build and Reload),它的底层动作就是主动去调用 UnrealBuildTool.exe (UBT)

普通的 C++ 编译器(如 MSVC)并不知道如何处理虚幻引擎特有的东西,

保持run的作用,关闭ue会自动关闭,

无论这个进程是用 C++、C# 还是 Python 写的,只要有对应的调试符号(PDB文件),IDE 就能"粘"上去。

不是通过 Rider 点击 Run 启动的 UE(比如你双击 .uproject 运行的),你依然可以通过 Attach to Process 选中 UnrealEditor.exe

操作系统的调试 API 接管目标进程。

寻找你当前代码编译出的 .pdb 文件,把内存里的机器码对应回你正在看的 .cpp 源码行数。

Attach 就能开始打断点。

很多小国确是是直接使用他国货币的,比如非欧盟中6个国家(地区)的货币,他们分别是:摩纳哥、圣马力诺、梵蒂冈、安道尔、黑山和科索沃地区。其中,前4个袖珍国根据与欧盟的协议使用欧元,而后两个国家(地区)则是单方面使用欧元。

,比如美元崩溃了,在逐渐崩溃的过程中,居民自然会逐渐转而选择其他货币,比如欧元、人民币来替代美元,都不需要你去换锚。

举个例子,银行和商家看到美元崩溃,此过程中肯定会逐步将自己的美元兑换为欧元、人民币等其他有信心的货币,自然而然就实现换锚了

寻找你当前代码编译出的 .pdb 文件,

内存里的机器码

回你正在看的 .cpp 源码行数。

NVM (Node Version Manager) has two main implementations:

  1. nvm-windows: For Windows operating systems
  2. nvm-sh: For Linux, macOS, and Windows Subsystem for Linux (WSL)

This guide will help you download the appropriate version for your operating system.
nvm (

Node Version Manager ) 主要管理计算机上多个不同版本的 Node.js 运行环境 。它允许用户在同一台机器上轻松安装、卸载、查看以及快速切换不同的 Node.js 版本(例如 v14, v16, v18 等),以解决不同项目对 Node.js 版本兼容性需求不同的问题。

  • nvm 安裝的 Node 會放在用戶目錄下,完全不需要管理員權限就能隨意安裝工具,這對 Roo Code 啟動相關組件非常重要。

IDE(如 VS Code 或 IntelliJ)默认不会帮你安装 Node.js

跨平台开发语言 :这些插件通常是用 TypeScript/JavaScript 编写的。要运行这些代码,系统必须有一个"引擎",这个引擎就是 Node.js

不让插件卡死你的编辑器,Roo Code 会在后台启动一个独立的 Node.js 进程来处理 AI 对话、文件扫描和 MCP 工具调用。

求 AI "帮我安装依赖"或"运行测试"时,AI 实际上是在调用你系统里的 Node.js 环境来执行这些命令。
根据 Stack Overflow 和 Statista 的最新调研数据(2025-2026年):

  • 全球最流行框架 :Node.js 是全球软件开发者中使用最广泛的 Web 技术,使用率高达 48.7%
  • 后端首选 :在后端开发领域,Node.js 以约 49.1% 的占有率稳居第一,领先于 ASP.NET Core (21.3%) 和 Express (20.3%)。
  • 生态规模 :其包管理器 npm 拥有超过 200 万个 软件包,是全球最大的软件注册表。

虽然在 Web 服务器总量上 Nginx 和 Apache 仍占大头,但 Node.js 在高性能应用中的占比持续上升:

  • 站点占比 :根据 W3Techs 2026 年 3 月的最新数据,Node.js 作为 Web 服务器的使用率约为 6.0%
  • 头部效应 :在高流量的大型站点中,Node.js 的采用率更高。知名用户包括 Netflix、PayPal、LinkedIn、Amazon、GitHub、SpotifyDiscord 等。

跨平台标准

绝大多数 AI 编程助手的底层交互协议(如 MCP)都优先支持 Node.js 环境。
使用时的动态激活 ( nvm use )
这是最容易被忽略的一步。虽然变量配置好了,但如果你不执行命令,环境变量里那个 C:\Program Files\nodejs 文件夹其实是 的(或者根本不存在)。

当你执行:

nvm use 20.11.1

nvm 的核心功能就在这时触发: 它会动态创建一个"符号链接"(Symbolic Link),把 C:\Program Files\nodejs 这个路径瞬间指向你安装好的 Node v20 文件夹。

只有执行了 nvm use ,你的 node -v where node 命令才会生效。

原始的 3D 查看器是基於較舊的框架(如 UWP)構建的。微軟目前正推動系統介面的現代化,並傾向於使用更強大且跨平台的解決方案。

系統建議用戶改用 Babylon.js Sandbox。Babylon.js 是一個功能更全面的網頁端 3D 引擎,支援多種格式(如 .gltf, .glb, .obj, .stl 等),且能提供更精確的照明控制、材質檢視與動畫播放功能。

pip install 是 Python 的官方套件管理工具 。它全称为 "Pip Installs Packages",专门用于下载、安装、更新和管理由 Python 编写的第三方函式庫(Packages)。透過 pip install <套件名稱> 指令,可輕鬆從 PyPI 下載安裝如 numpy pandas 等庫。
Aider 是基於 Python 的工具。請確保你的電腦已安裝 Python,然後在 Rider 底部的 Terminal 輸入:
bash

复制代码
pip install aider-chat

与 Aider (原版) 的关系
这是一个 "前端"与"后端" 的关系:

  • Aider (CLI):是引擎,负责分析代码、调用 API、执行 Git 提交。
  • Aider-Desk:是仪表盘,负责把引擎的能力展示成按钮和窗口。

注意: 使用 Aider-Desk 前,你通常仍然需要在电脑上通过 pip install aider-chat 安装好原版 Aider,因为它本质上是在后台帮你在跑命令行。

Python 环境里缺少必要的"建筑工具"setuptools ),导致 pip 在尝试安装 Aider 时,无法处理一些需要现场编译的组件。

setuptools: 建筑师(负责把源码变成可执行程序)。
UE4 后期版本和 UE5 默认都内嵌了一个特定版本的 Python(例如 UE 5.4/5.5 通常内嵌的是 Python 3.11)。

  • 物理隔离 :UE 会在它自己的安装目录下(如 Engine/Binaries/ThirdParty/Python3/... )放一个完整的 Python 运行环境。
  • 不看系统版本 :无论你系统里装的是 3.13 还是用 pyenv 切换到了 3.12,UE 运行脚本时默认只认它自己带的那个

在 UE 环境中安装库(解决 NumPy 报错的关键)
如果你要在 UE 的 Python 里用 numpy ,直接在 CMD 里输入 pip install numpy 无效的(它会装到你系统的 3.13 里去,导致 UE 找不到,或者再次报编译错误)。
正确做法: 你需要调用 UE 内嵌的那个 python.exe 来安装。

  1. 找到 UE 目录下的 python.exe (通常在 Engine\Binaries\ThirdParty\Python3\Win64 )。
  2. 在那个目录下打开 PowerShell,执行:

为什么没有 .exe
因为 pyenv 的核心工作原理是 修改系统的环境变量(PATH)

  1. 它需要把自己排在系统自带 Python 的前面。
  2. .exe 安装程序有时无法完美处理复杂的路径优先级冲突。
  3. 通过命令行安装可以确保它能正确地"劫持"你的 python 指令。

用户目录(如

C:\Users\用户名 /home/user )下以 . 开头的文件夹是隐藏的配置文件或应用数据文件夹 。它们通常由开发者工具、软件程序创建,用于存储用户特定的软件设置、缓存、历史记录或插件,遵循 Linux 风格的隐藏文件习惯。
常见 . 开头文件夹示例:

  • .vscode : Visual Studio Code 编辑器配置。
  • .android / .androidstudio : Android SDK 或 Android Studio 配置文件。
  • .ssh : SSH 密钥和登录配置。
  • .gitconfig / .git : Git 版本控制的全局配置。
  • .cache / .local : 软件运行产生的缓存或本地应用程序数据。
  • .docker : Docker 配置文件。

若软件已卸载,可放心删除对应的 .文件夹

在 Linux/macOS 中使用 ls -a 查看;Windows 中可在"视图"设置中勾选"显示隐藏的文件"。

加个点变成 .pyenv ,明确告诉系统和开发者:"这是一个底层工具的存储目录,不是普通用户的数据文件夹。"

  • 用戶變數 :僅對當前登入的使用者(例如 86134 )生效。安裝和修改不需要管理員(Administrator)權限。
  • 系統變數:對這台電腦的所有使用者生效。修改它通常需要彈出 UAC 警告。
  • 關鍵點pyenv 的運作原理是頻繁地更換 Python 版本,這涉及到修改路徑。如果放在系統變數,每次切換版本可能都會因為權限不足而失敗。

Windows 搜尋命令的邏輯是:

  1. 當前目錄
  2. 用戶變數中的 Path
  3. 系統變數中的 Path

如果你把 pyenv 放在 用戶變數 並置頂,它就能成功「截獲」原本指向系統自帶 Python 3.13 的指令。如果你放在系統變數,萬一順序沒排好,系統可能還是會跑去執行原本安裝在 C:\Python313 的舊程式。

修改了系統變數,強行把全域 Python 換成 3.12,可能會導致某些依賴 3.13 的系統工具出錯。
這涉及到 pyenv 如何「截獲」並「切換」你的 Python 指令:

  • %PYENV%\bin
    • 這裡存放的是 pyenv.bat 主程式。
    • 作用 :讓你在終端機輸入 pyenv install pyenv global 時,電腦知道去哪裡執行這個管理工具。
  • %PYENV%\shims (最重要的部分):
    • shims 就像是「墊片」或「代理人」。
    • 作用 :當你切換到 Python 3.12 時,shims 文件夹裡會生成一個假的 python.exe 。當你輸入 python ,它會先跑去問 pyenv :「現在該用哪個版本?」,然後再幫你跳轉到真實的 Python 3.12 路徑。
    • 關鍵 :這就是為什麼你不需要手動改路徑,只要 pyenv global 3.12 ,這個「代理人」就會自動幫你換人。

如果系統變數裡已經裝了兩個 Python,會怎樣?
這就是為什麼要強調 「順序」「用戶變數」

  • 優先級規則 :Windows 執行命令時,會按照 Path 列表從上到下 尋找。找到第一個匹配的 .exe 就停止。
  • 用戶變數 vs 系統變數 :Windows 會先看用戶變數 的 Path,再看系統變數的 Path。

你的情況:

  1. 系統變數裡有 Python 3.13 和 3.10。
  2. 你在用戶變數裡添加了 %PYENV%\shims
  3. 結果 :當你輸入 python ,Windows 會先在用戶變數 裡找到 shims 裡的 Python 代理人,然後直接執行它。系統變數裡的 3.13 和 3.10 會被直接跳過(無視)

%USERPROFILE% %IntelliJ IDEA% )被称为 "环境变量" (Environment Variables)
它们本质上是 路径的快捷方式系统占位符,主要作用和含义如下:

  1. 为什么使用它?
  • 兼容性 :不同的电脑,用户文件夹的名字可能不同(例如你的用户名是 86134 ,别人的可能是 Admin )。使用 %USERPROFILE% 可以让程序自动找到当前登录用户的根目录,而不需要硬编码具体的用户名。
  • 权限分层:系统运行在"管理员"或"系统级"权限下,而你平时操作是在"用户"权限下。
  • 防止病毒扩散:如果某个流氓软件或病毒在你操作时运行,它只能破坏你这个"用户"的文件,而很难直接修改系统的核心引导文件(因为那需要更高级别的系统权限)。

现代软件(如 Chrome, VS Code, Office)通常不会把你的个人设置(插件、历史记录、书签)存在安装目录下,而是存在 C:\Users\用户名 下。

  • 重装/备份方便:如果你想换台电脑,你只需要拷贝这个用户文件夹,就能带走所有软件的个性化配置。

(%USERPROFILE%):正如你上一张图中看到的,程序通过"用户名"这个占位符,可以准确找到你的文档和桌面,而不会和其他临时数据混淆。
操作系统在底层把"人"看作一个 进程的所有者

  • 即使只有你一个人,电脑后台可能运行着几十个系统服务。系统需要区分哪些任务是"你"发起的(比如打开网页),哪些是"系统"发起的(比如更新驱动)。
  • 如果没有用户概念,所有的程序都会混在一起,系统很难有效管理内存分配和任务优先级。
  • 通用性:开发者不可能为"单人电脑"专门开发一套系统架构,再为"多人电脑"开发另一套。
  • 未来扩展:也许你现在是一个人用,但如果你未来想创建一个专门用来测试软件的"访客账号",或者把电脑临时借给朋友,现有的用户架构让你点几下鼠标就能完成隔离,而不需要重新安装系统。

第二个(或多个)用户账号 通常不是为了给别人用,而是 为了**"环境隔离"** 和**"系统急救"** 。
"Tin"在

普通话中没有严格对应的汉字读音。现代标准汉语(普通话)声母t和韵母in不兼容,即没有tin这个音节。但在粤语等方言中存在"tin"的发音(如"田"、"天"),在英语中则指"锡"或"罐头"

原版 pyenv 不支持 Windows。

pyenv 通过 "shims" 拦截 python 命令,而 conda 通过修改 $PATH 激活环境。两者同时开启会导致 shell 变得非常混乱。

Aider 的安装确实对 Python 版本有严格要求

。目前它仅官方支持 Python 3.9 到 3.12。如果你使用了 Python 3.13 或更旧的版本,或者环境中有依赖冲突,直接 pip 安装大概率会失败。
任何操作系统中,当你输入 python 时,系统会按照环境变量 PATH 里的文件夹顺序,从左到右挨个找。谁排在最前面,谁就是"默认"。

  • 激活前 :你的 PATH 可能是 C:\Windows; C:\Python313 。系统先看到 3.13,于是运行它。
  • 激活后 :Conda 把它的环境路径强行插到了最前面 ,变成:
    C:\Users\Conda\envs\aider\bin; C:\Windows; C:\Python313
    系统第一眼看到的是 aider 环境里的 Python,于是成功"接管"。

环境查看与切换(控制谁排在 $PATH 最前面)

  • conda env list :列出所有已创建的"集装箱"(环境)及其存放路径。
  • conda activate <环境名> :核心命令。执行后,该环境的路径会被插入到系统 $PATH 的最前面。
  • conda deactivate :退出当前环境,将 $PATH 恢复到进入环境之前的状态。

确认当前"接管"状态
如果你想知道现在到底是谁在当家,可以用这些命令:

  • conda info :显示当前激活环境的所有细节,包括 Python 版本、路径和环境变量。
  • which python (Mac/Linux) 或 where python (Windows):
    直接显示系统搜索 python 命令时找到的第一个路径。如果是在 Conda 环境下,它应该指向 .../envs/环境名/python

只有通过 Conda 渠道下载的,它才"全权负责"
如果你使用 conda install <包名> ,它会从官方或第三方"频道"(Channels,如 conda-forge)下载。

  • 这种资源受它完美管理:它可以自动处理 Python 版本、C++ 编译器版本、甚至系统级库(如 CUDA, SSL)的冲突。
  • 它可以实现"一键还原" :如果你装坏了,conda install 能帮你回溯版本。

Aider 报错,是因为它需要 Python 3.10-3.12 的底层环境。你用 conda create -n aider python=3.12 ,Conda 就会去自己的服务器下载一个 完美的、预编译好的 3.12 解释器二进制文件 放到对应的文件夹里。

Conda Channels (Conda 的仓库) :虽然核心库(如 NumPy, Pandas, PyTorch)更新非常快且极其稳定,但一些冷门或刚出的工具(比如 Aider 的某些新组件)可能还没人搬运到 Conda 的频道里。
(pip 是"亲儿子")

  • pip 是 Python 官方(PyPA)自带的包管理工具。几乎所有的 Python 教程、GitHub 项目的 README 都会默认你已经装好了 Python,所以直接写 pip install

没人搬运到 Conda 的频道里。

当你使用 pyenv global 3.10.0 pyenv local 3.8.0 时,它其实是在修改一个指向。如果 Python 是你自己乱放的,切换时经常会出现 pip 找不到路径或环境变量冲突的问题。
Python 本质上是"绿色软件"
虽然官方提供 .exe 安装包,但 Python 其实只需要一个文件夹(包含 python.exe 、标准库和解释器)就能运行。

  • 无注册表依赖:Python 运行并不高度依赖 Windows 注册表。只要文件夹完整,丢到哪都能跑。
  • pyenv 的做法 :它只是把这些文件夹统一放在了 \.pyenv\pyenv-win\versions\ 目录下。你删除旧的、下载新的,本质上只是换了个文件夹存放。

你写的 .py 文件、项目代码都在你自己的文档或工程文件夹里。

  • 卸载 Python 不会删除你的代码。
  • 重新下载后,你只需要告诉编辑器(如 VS Code 或 PyCharm):"嘿,现在的 Python 解释器在 pyenv 的路径下",代码就能立即跑起来。

大家最担心的是卸载后之前安装的 requests pandas 等库没了。其实这很好解决:

  • 导出清单 :在卸载前,运行 pip freeze > requirements.txt
  • 一键恢复 :在 pyenv 安装完新版本后,运行 pip install -r requirements.txt
  • 这样,你的开发环境就能在几分钟内原样恢复。

影响最小的关键点。

  • 以前 :你安装多个 Python,需要手动去系统设置里改 PATH ,改错了就会出现"明明装了却找不到"或者版本对不上的情况。
  • 现在pyenv-win 已经帮你把 PATH 占住了(通过 Shim 垫片)。无论你下载还是删除版本,系统环境变量都不需要再动了 ,你只需要敲一行 pyenv global x.x.x 即可。

python多版本管理pyenv ,是相对于文件夹内的操作设置。
pyenv local
的设置是相对于 当前目录(Current Working Directory) 及其 子目录 的。
它的工作原理非常直观:

  1. 核心逻辑:寻找 .python-version 文件
    当你运行 pyenv local 3.10.0 时, pyenv-win 会在当前文件夹下创建一个名为 .python-version 的隐藏文本文件,内容只有一行: 3.10.0
    当你在这个文件夹下输入 python 命令时:

  2. 垫片(Shim)拦截pyenv 的垫片程序启动。

  3. 向上追溯 :它首先检查当前目录 是否有 .python-version

  4. 递归搜索 :如果当前目录没有,它会向上一级父目录查找,直到磁盘根目录。

  5. 最终回退 :如果全盘都没找到,它才会使用 pyenv global 定义的全局版本。

假设你有两个项目文件夹:

  • 项目 A (C:\Projects\Web ) :需要 Python 3.8。
    • 你在该目录下运行 pyenv local 3.8.0
  • 项目 B (C:\Projects\AI ) :需要 Python 3.11。
    • 你在该目录下运行 pyenv local 3.11.5
  • 当你 cd 进入 Web 文件夹,输入 python ,执行的是 3.8
  • 当你 cd 进入 AI 文件夹,输入 python ,执行的是 3.11
  • 不需要手动修改任何环境变量,切换目录即切换版本。

pyenv 确定版本的优先级如下:

  1. Shell 级 (pyenv shell ):仅对当前终端窗口有效(最高优先级)。
  2. 局部级 (pyenv local ):相对于当前目录及其子目录(你关心的这个)。
  3. 全局级 (pyenv global ):全系统默认版本(最低优先级)。

所以当我想对某个项目独立出来,我需要在这个文件夹下手动输入pyenv local,

当你想要为一个特定项目独立 Python 版本时,只需要执行以下两步:

  1. 进入项目文件夹cd your-project-path
  2. 设置版本pyenv local 3.x.x (前提是你已经用 pyenv install 下载了这个版本)

venv 是 Python 3.3 版本以后自带的标准库模块,不需要额外安装

不怕删 :如果你觉得这个项目的库装乱了,直接把 .venv 文件夹删掉,重新运行上面的命令,环境就重置了。

bash 复制代码
PS C:\Users\86134> pyenv install 3.12
:: [Info] ::  Mirror: https://www.python.org/ftp/python
:: [Info] ::  Mirror: https://downloads.python.org/pypy/versions.json
:: [Info] ::  Mirror: https://api.github.com/repos/oracle/graalpython/releases
:: [Downloading] ::  3.12.10 ...
:: [Downloading] ::  From https://www.python.org/ftp/python/3.12.10/python-3.12.10-amd64.exe
:: [Downloading] ::  To   C:\Users\86134\.pyenv\pyenv-win\install_cache\python-3.12.10-amd64.exe
:: [Installing] ::  3.12.10 ...
:: [Info] :: completed! 3.12.10
PS C:\Users\86134> pyenv local
no local version configured for this directory
PS C:\Users\86134> pyenv version
No global/local python version has been set yet. Please set the global/local version by typing:
pyenv global <python-version>
pyenv global 3.7.4
pyenv local <python-version>
pyenv local 3.7.4
PS C:\Users\86134> python
No global/local python version has been set yet. Please set the global/local version by typing:
pyenv global 3.7.4
pyenv local 3.7.4
PS C:\Users\86134> pyenv versions
  3.12.10
PS C:\Users\86134> pyenv global 3.12
PS C:\Users\86134> pyenv global
3.12
PS C:\Users\86134>

https://github.com/pyenv-win/pyenv-win

python --version 检查一下是否变成了 3.12。

--verisons检查全部 python版本

设置项目特定版本 (Local)
如果你在一个特定的项目文件夹里,只想在这个项目用 3.12(而不影响其他地方):
powershell

复制代码
# 先进入项目目录
cd C:\你的项目路径
# 绑定版本
pyenv local 3.12.0

这时你会发现文件夹里多了一个 .python-version 文件。

既然版本已经有了,你可以尝试创建一个 venv 虚拟环境 来开始你的项目:
powershell

复制代码
# 1. 确保你在项目文件夹
# 2. 创建虚拟环境
python -m venv .venv
# 3. 激活它
.\.venv\Scripts\activate
相关推荐
艾莉丝努力练剑2 小时前
【Linux线程】Linux系统多线程(三):Linux线程 VS 进程,线程控制
java·linux·运维·服务器·c++·学习·ubuntu
徒 花2 小时前
Python知识学习07
windows·python·学习
浮芷.2 小时前
Flutter 框架跨平台鸿蒙开发 - 急救指南应用
学习·flutter·华为·harmonyos·鸿蒙
嵌入式×边缘AI:打怪升级日志2 小时前
Linux 常用命令学习笔记(续):查找、压缩、vi 编辑器与其他命令
linux·笔记·学习
AI成长日志2 小时前
【笔面试算法学习专栏】链表操作·基础三题精讲(206.反转链表、141.环形链表、21.合并两个有序链表)
学习·算法·面试
华法林的小助手3 小时前
[学习笔记]在ros humble里使用qt
笔记·qt·学习
red_redemption3 小时前
自由学习记录(158)
学习
智慧化智能化数字化方案3 小时前
向华为学习——解读质量管理培训 IPD基础知识研发质量管理【附全文阅读】
学习·华为ipd流程·ipd基础知识·研发质量管理
Fanfffff7203 小时前
前端进阶:从请求竞态到并发控制(系统学习笔记)
前端·笔记·学习