自由学习记录(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、Spotify 和 Discord 等。

跨平台标准:

绝大多数 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
相关推荐
Titan202421 分钟前
MySQL访问个人学习笔记
笔记·学习·mysql
小雪崩1 小时前
嵌入式学习 day64:字符设备驱动
学习
个 人 练 习 生2 小时前
C++ string 类模拟实现:从底层理解字符串(上)
开发语言·c++·经验分享·学习·程序人生
坤坤子吖2 小时前
C++智能指针:RAII、shared_ptr与内存泄漏
开发语言·c++·笔记·学习
词却4 小时前
OpenCV学习:MediaPipe 人脸网格检测
opencv·学习
李日华大战鸡红4 小时前
FOC SVPWM过调制(学习记录)
stm32·单片机·学习
AI职业加油站4 小时前
AI 校招现状:大模型应用工程师证书,助力简历能力证明
大数据·运维·人工智能·学习·职场发展
陈年老古董5 小时前
Hive 函数学习笔记(上):单行函数与炸裂函数
hive·笔记·学习
喜欢打篮球的普通人5 小时前
MiniMind 学习笔记(十八):速通强化学习——从 MDP 到 PPO 的概念与算法地图
笔记·深度学习·学习
老王爱玩车6 小时前
动态内存管理
c语言·开发语言·学习·面试