AMD显卡配置PyTorch GPU环境:从ROCm驱动到Anaconda虚拟环境全攻略

发布时间:2026/8/3 6:36:55

AMD显卡配置PyTorch GPU环境:从ROCm驱动到Anaconda虚拟环境全攻略
1. 从“能用”到“好用”AMD显卡与PyTorch的适配之路如果你手头有一块AMD显卡想在Anaconda里装上PyTorch来跑深度学习大概率会经历一个从兴奋到困惑再到最终豁然开朗的过程。网上铺天盖地的教程十有八九都是针对NVIDIA的CUDA生态一句简单的conda install pytorch torchvision torchaudio cudatoolkit11.3 -c pytorch就能搞定一切。但当你把这条命令复制到自己的AMD机器上运行时要么是找不到对应的包要么就是安装后GPU完全无法被识别程序依然在CPU上龟速运行。这种感觉就像拿着一把高级门锁的钥匙却怎么也打不开自家那扇普通的门。问题的核心在于PyTorch长期以来深度绑定NVIDIA的CUDA平台。CUDA是NVIDIA的独家技术AMD显卡无法直接使用。因此要让PyTorch在AMD显卡上跑起来我们需要一个“翻译官”——一个能将PyTorch的CUDA调用翻译成AMD显卡能理解的指令的桥梁。这个桥梁就是ROCm。ROCm是AMD推出的开源软件平台其地位相当于NVIDIA的CUDA它包含了驱动、编译器、库和工具旨在让AMD GPU能够高效地运行高性能计算和机器学习工作负载。我们今天的任务就是要在Anaconda这个强大的Python环境管理器中搭建起PyTorch通过ROCm与AMD显卡通信的完整通路。这个过程不仅仅是安装几个包那么简单它涉及到对系统环境、驱动版本、软件栈兼容性的精细调整。很多初次尝试的朋友往往卡在某个环节比如驱动不匹配、ROCm版本与PyTorch版本冲突或者虚拟环境配置错误。接下来我将以一个从业者的视角带你完整走一遍从零开始在Anaconda中为AMD显卡配置PyTorch GPU环境的全流程并分享那些官方文档里不会写的“坑”和应对技巧。2. 环境准备驱动、ROCm与Anaconda的“铁三角”在动手安装任何软件包之前我们必须确保地基是稳固的。对于AMD显卡的PyTorch环境这个地基由三个核心部分组成正确的显卡驱动、适配的ROCm平台以及一个干净的Anaconda环境。三者环环相扣任何一环出问题都会导致后续步骤失败。2.1 确认显卡型号与安装官方驱动首先你需要确认你的AMD显卡是否在ROCm的支持列表中。ROCm对显卡型号有明确要求通常支持较新的Radeon Instinct系列、Radeon Pro系列以及部分消费级的Radeon RX系列如RX 7900 XTX、RX 6900 XT等。你可以访问AMD ROCm的官方文档页面查看最新的“Supported GPUs”列表。确认支持后第一步是安装或更新AMD显卡驱动。这里有一个关键点ROCm需要特定的“ROCm驱动”而不是你从AMD官网下载的、用于玩游戏的普通“Radeon Software Adrenalin Edition”驱动。这两个驱动是互斥的不能共存。如果你已经安装了游戏驱动需要先完全卸载它。对于Ubuntu/Debian系Linux系统安装ROCm驱动相对规范。以下是在Ubuntu 22.04 LTS上的标准步骤添加ROCm仓库并更新wget https://repo.radeon.com/amdgpu-install/latest/ubuntu/jammy/amdgpu-install_6.1.60100-1_all.deb sudo apt install ./amdgpu-install_6.1.60100-1_all.deb sudo apt update安装ROCm驱动和核心组件sudo amdgpu-install --usecaserocm这条命令会安装ROCm内核驱动、用户态库和基础工具。安装完成后强烈建议重启系统以确保新驱动加载。验证驱动安装 重启后使用以下命令验证驱动和GPU是否被系统识别rocminfo这个命令会输出大量关于ROCm平台和检测到的GPU的信息。如果你能看到你的显卡型号比如gfx90a或gfx1030等架构代号出现在输出中并且没有报错那么驱动安装就基本成功了。 另一个有用的命令是rocm-smi它可以像NVIDIA的nvidia-smi一样显示GPU的利用率、温度、功耗和显存占用情况。注意对于Windows用户情况要复杂得多。截至目前ROCm对Windows的官方支持仍处于早期阶段且PyTorch的官方预编译包主要面向Linux。在Windows上获得完整的AMD GPU支持通常需要借助WSL 2Windows Subsystem for Linux。这意味着你需要在Windows上启用WSL 2安装一个Linux发行版如Ubuntu然后在这个Linux子系统中重复上述步骤。这无疑增加了复杂度也是很多A卡用户在Windows上折戟的主要原因。因此如果你的主要工作环境是Windows并且希望获得最稳定、最直接的体验我强烈建议你考虑使用Linux系统实体机或虚拟机。2.2 创建并激活一个独立的Anaconda虚拟环境永远不要在base环境里直接安装项目依赖这是一个必须养成的好习惯。使用虚拟环境可以避免包版本冲突也让环境清理和重建变得无比简单。打开你的终端Linux或Anaconda PromptWindows执行以下命令# 创建一个名为‘rocm_pytorch’的新环境并指定Python版本例如3.10 conda create -n rocm_pytorch python3.10 -y # 激活这个环境 conda activate rocm_pytorch激活后你的命令行提示符前应该会显示(rocm_pytorch)这表明你已进入该虚拟环境后续的所有安装操作都将局限于此环境内。3. 核心安装为PyTorch匹配正确的ROCm“接口”地基打好了现在可以开始盖房子了。PyTorch与ROCm的对接是通过一系列预编译的Wheel包.whl文件实现的。PyTorch官方为不同的ROCm版本提供了对应的安装命令。3.1 确定PyTorch与ROCm的版本组合这是整个过程中最容易出错的一步。PyTorch版本、ROCm版本、Python版本甚至你的Linux内核版本都需要保持兼容。目前以当前时间点为例一个经过广泛验证的稳定组合是PyTorch: 1.13或2.0ROCm: 5.4.2为什么是这两个版本PyTorch 1.13和2.0对ROCm 5.x的支持相对成熟和稳定社区反馈的问题较少。而更新的PyTorch 2.1 可能要求ROCm 5.6但新版本ROCm的驱动和系统兼容性可能又会带来新的挑战。对于初次配置追求稳定是第一要务。你可以在 PyTorch官网 的历史版本安装指南中找到对应命令。但更直接的方法是访问 PyTorch的ROCm安装页面 选择Linux、Pip、ROCm以及你想要的版本它会生成对应的安装命令。3.2 执行安装命令在我们的rocm_pytorch虚拟环境激活状态下执行从官网获取的命令。例如安装PyTorch 2.0.1 ROCm 5.4.2的命令可能如下所示pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/rocm5.4.2关键点解析--index-url参数指定了包索引地址这里指向了PyTorch官方为rocm5.4.2构建的仓库。使用pip install而不是conda install。因为PyTorch为ROCm提供的预编译包主要通过PyPIpip分发Conda渠道的ROCm版本支持往往滞后或不完整。这条命令会安装torch,torchvision,torchaudio三个核心包及其依赖。安装过程可能会持续几分钟取决于你的网络速度。请耐心等待。3.3 验证安装是否成功安装完成后千万不要想当然认为成功了。我们必须进行严格的验证。首先在Python交互环境中进行基础验证import torch print(fPyTorch版本: {torch.__version__}) print(fCUDAROCm是否可用: {torch.cuda.is_available()}) print(fGPU设备数量: {torch.cuda.device_count()}) print(f当前GPU设备名称: {torch.cuda.get_device_name(0) if torch.cuda.device_count() 0 else 无GPU})如果一切正常你将看到类似以下输出PyTorch版本: 2.0.1rocm5.4.2 CUDAROCm是否可用: True GPU设备数量: 1 当前GPU设备名称: AMD Radeon Graphics [Radeon RX 7900 XTX]请注意这里torch.cuda.is_available()返回True并不意味着你安装了CUDA而是PyTorch的ROCm后端成功初始化并且将自身“伪装”成了CUDA设备以供API调用。这是ROCm设计上的兼容性体现。接下来进行一个简单的张量运算测试这是检验计算是否真的发生在GPU上的“金标准”# 在CPU上创建一个张量 cpu_tensor torch.randn(10000, 10000) print(f张量设备: {cpu_tensor.device}) # 应该输出 ‘cpu’ # 将张量移动到GPU上 if torch.cuda.is_available(): gpu_tensor cpu_tensor.to(cuda:0) # 使用‘cuda’这个名称这是API兼容性要求 print(f移动后张量设备: {gpu_tensor.device}) # 应该输出 ‘cuda:0’ # 执行一个GPU上的计算 result gpu_tensor gpu_tensor.T print(GPU矩阵乘法计算完成) print(f结果张量设备: {result.device}) # 应该输出 ‘cuda:0’如果这段代码能顺利执行并且没有报错如RuntimeError: No HIP GPUs are available那么恭喜你你的PyTorch已经成功在AMD GPU上运行了4. 疑难杂症与深度排错指南即使按照上述步骤操作你也可能遇到各种问题。下面我梳理了几个最常见的“坑”及其解决方案。4.1torch.cuda.is_available()返回 False这是最令人头疼的问题。意味着PyTorch没有检测到可用的GPU设备。请按照以下链路系统性排查检查ROCm驱动与系统加载再次运行rocminfo和rocm-smi。如果rocminfo报错或rocm-smi显示“No devices found”说明ROCm驱动根本没有正确识别你的显卡。回到第2.1节检查驱动安装日志确认是否安装了正确的--usecaserocm包并确保已重启。检查用户组你的当前用户是否在video和render组中如果没有GPU访问可能会被拒绝。可以尝试将用户加入这些组sudo usermod -a -G video,render $USER然后注销并重新登录或重启使组权限生效。检查PyTorch的ROCm构建版本在Python中执行print(torch.__version__)。如果版本号后面没有类似rocm5.4.2的后缀而是cpu或者什么都没有说明你安装的是CPU版本的PyTorch。这通常是因为pip默认从PyPI安装了不兼容的版本。解决方案彻底卸载当前torch并使用明确的--index-url重新安装。pip uninstall torch torchvision torchaudio -y pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/rocm5.4.2检查环境变量ROCm运行时可能需要一些环境变量。在你的虚拟环境激活脚本中或直接在终端中设置以下变量有时能解决问题export HSA_OVERRIDE_GFX_VERSION10.3.0 # 仅当你的显卡是RDNA2架构如RX 6000系列且rocminfo识别有问题时尝试。具体值需查询你的GPU架构。 export PYTORCH_HIP_ALLOC_CONF‘max_split_size_mb:128’ # 调整HIP内存分配器行为有助于解决某些内存错误。你可以将这些命令添加到你的~/.bashrc或虚拟环境的activate脚本中使其永久生效。4.2 运行模型时出现HIPROCm底层相关错误例如HIP_ERROR_NoDeviceFound,HIP_ERROR_InvalidValue等。这通常指向更深层的兼容性问题。版本不匹配这是首要怀疑对象。确保你的PyTorch版本、ROCm驱动版本、甚至系统内核版本是官方文档声明兼容的。例如PyTorch 2.0.1的ROCm 5.4.2版本就不应与ROCm 5.6的驱动混用。解决方法是严格对齐版本。内核模式队列KFD问题ROCm的Kernel Fusion Driver可能加载失败。运行lsmod | grep kfd查看amdkfd模块是否加载。如果未加载可以尝试手动加载sudo modprobe amdkfd但这通常意味着驱动安装有问题。权限与路径问题确保/dev/kfd设备文件存在且当前用户有读写权限。可以检查ls -l /dev/kfd。4.3 性能不及预期或出现内存溢出OOM成功运行后你可能会发现性能没有想象中好或者处理稍大模型就报OOM。性能调优设置HIP_VISIBLE_DEVICES如果你有多块GPU可以通过这个环境变量指定PyTorch使用哪一块。调整num_workers在DataLoader中适当增加num_workers可以提升数据加载效率但不宜超过CPU核心数。使用混合精度训练ROCm同样支持Automatic Mixed Precision (AMP)。使用torch.cuda.amp尽管叫cuda但ROCm后端也适用可以显著减少显存占用并加速计算。from torch.cuda.amp import autocast, GradScaler scaler GradScaler() with autocast(): outputs model(inputs) loss criterion(outputs, labels) scaler.scale(loss).backward() scaler.step(optimizer) scaler.update()显存管理监控工具养成使用rocm-smi或更现代的rocm-smi --showmeminfo来实时监控显存使用情况的习惯。清理缓存在PyTorch中可以使用torch.cuda.empty_cache()来释放未使用的显存缓存。在长时间训练或进行多个实验时适时调用此函数。梯度累积对于显存不足的大模型可以采用梯度累积技术即多次前向传播的梯度累加后再进行一次反向传播等效于增大了批次大小batch size但不会增加单次显存消耗。检查点技术使用torch.utils.checkpoint来用计算时间换取显存空间它会在反向传播时重新计算部分前向传播的结果。5. 进阶配置与生态工具链当基础环境跑通后你可以进一步配置整个开发工作流使其更高效。5.1 配置PyCharm或VS Code在IDE中使用配置好的环境非常简单。以PyCharm为例打开PyCharm进入File - Settings - Project: your_project - Python Interpreter。点击齿轮图标选择Add...。选择Conda Environment-Existing environment。在Interpreter路径中导航到你的Anaconda安装目录下的envs/rocm_pytorch/bin/python。点击OKPyCharm就会使用这个配置了ROCm版PyTorch的解释器。在VS Code中你可以通过CtrlShiftP打开命令面板输入Python: Select Interpreter然后选择路径为~/anaconda3/envs/rocm_pytorch/bin/python的解释器。5.2 安装额外的科学计算与可视化库一个完整的深度学习环境还需要其他库。在你的rocm_pytorch环境中可以继续用pip安装pip install numpy pandas matplotlib scikit-learn jupyter安装Jupyter后你可以用jupyter notebook或jupyter lab启动笔记本并在代码中正常导入torch并使用GPU。5.3 处理特定库的ROCm支持一些高级库可能对ROCm有特殊要求。例如TensorFlowAMD也为TensorFlow提供了ROCm支持但需要从特定源安装如pip install tensorflow-rocm。注意一个环境内同时安装PyTorch和TensorFlow的ROCm版可能会引起冲突建议为不同框架创建独立的虚拟环境。ONNX Runtime如果需要模型转换或部署ONNX Runtime也提供了ROCm执行提供程序Execution Provider可以从源码编译或寻找社区预编译包。6. 长期维护与版本升级建议软件世界日新月异PyTorch和ROCm都在快速迭代。如何安全地维护和升级你的环境冻结环境在项目稳定后使用pip freeze requirements.txt将当前环境的所有包及其精确版本号导出。这保证了项目在任何地方都能被复现。谨慎升级不要盲目追求最新版本。在升级PyTorch或考虑升级ROCm驱动前务必查阅官方发布说明和社区论坛看是否有已知的兼容性问题或重大变更Breaking Changes。最好在另一个新建的虚拟环境中进行测试确认核心功能正常后再迁移主项目。利用Docker对于追求极致环境一致性和可移植性的团队可以考虑使用Docker。AMD官方和PyTorch社区都维护了一些包含ROCm和PyTorch的Docker镜像。使用Docker可以完全隔离宿主机环境避免“在我的机器上能跑”的问题。你需要安装支持ROCm的Docker运行时然后拉取类似rocm/pytorch:latest这样的镜像。关注社区ROCm的开源生态相比CUDA仍在成长中遇到奇怪问题时GitHub Issues、ROCm论坛、PyTorch论坛以及相关的Subreddit如/r/ROCm是寻找答案和解决方案的宝贵资源。很多问题可能已经有人遇到并给出了解决方案。走完这一整套流程你应该已经成功地将PyTorch驾驭在了你的AMD显卡之上。这个过程虽然比在NVIDIA显卡上安装要曲折一些但每一步的排查和解决都是对底层系统、驱动和框架协同工作方式的深入理解。这种理解远比简单地复制粘贴一条安装命令来得有价值。它让你在遇到问题时不再茫然无措而是能够有条理地分析、定位并最终解决。现在你可以尽情地在这个亲手搭建的环境里开始你的深度学习之旅了。

相关新闻

Excel COUNTIF函数数据查重全攻略:从原理到高阶应用

Excel COUNTIF函数数据查重全攻略:从原理到高阶应用

2026/8/3 6:36:55

1. 项目概述:为什么COUNTIF是数据查重的“定海神针”如果你经常和Excel打交道,处理客户名单、库存清单或者员工信息表,那你一定遇到过这样的烦恼:表格里怎么会有两个一模一样的客户电话?或者同一件商品被录入了两次&am…

SpringBoot启动失败:DataSource配置问题排查与优化指南

SpringBoot启动失败:DataSource配置问题排查与优化指南

2026/8/3 6:36:55

1. 项目概述:当SpringBoot启动时,它卡在了哪里?“项目启动失败”是每个Java后端开发者,尤其是SpringBoot使用者,最不愿在控制台看到的字样之一。而在众多启动失败的原因中,与DataSource(数据源&…

卡牌游戏开发的技术困境与Godot框架的模块化解法:从性能瓶颈到规则引擎的完整方案

卡牌游戏开发的技术困境与Godot框架的模块化解法:从性能瓶颈到规则引擎的完整方案

2026/8/3 6:36:55

卡牌游戏开发的技术困境与Godot框架的模块化解法:从性能瓶颈到规则引擎的完整方案 【免费下载链接】godot-card-game-framework A framework which comes with prepared scenes and classes to kickstart your card game, as well as a powerful scripting engine t…

Blender到Unity的FBX导出终极指南:解决模型、材质与动画问题

Blender到Unity的FBX导出终极指南:解决模型、材质与动画问题

2026/8/3 7:56:59

1. 项目概述:为什么FBX导出总出问题?如果你在Blender里精心雕琢了一个模型,满怀期待地想把它丢进Unity里大展拳脚,结果导进去一看——模型位置飘在天上、材质贴图全黑、动画骨骼错乱,甚至直接报错导不进去。相信我&…

MyBatis TypeHandler类型转换机制与实战解析

MyBatis TypeHandler类型转换机制与实战解析

2026/8/3 7:56:59

1. TypeHandler类型转换器核心解析 在持久层框架开发中,数据类型的转换是个高频痛点问题。最近在项目里处理时间字段时,发现TableField(typeHandler LocalDateTimeTypeHandler.class)注解突然失效,这促使我重新梳理了TypeHandler的完整工作机…

无线通信路径损耗与阴影衰落:从原理到工程实践

无线通信路径损耗与阴影衰落:从原理到工程实践

2026/8/3 7:56:59

1. 项目概述:从信号“翻山越岭”说起无线信号在空间中的传播,从来都不是一条坦途。想象一下,你站在一个空旷的广场上给朋友打电话,声音清晰;但当你走进旁边一栋大楼的深处,信号可能就变得断断续续&#xff…

WordPress性能优化全攻略:从诊断CPU内存高占用到底层架构调优

WordPress性能优化全攻略:从诊断CPU内存高占用到底层架构调优

2026/8/3 7:56:59

1. 项目概述:当你的WordPress站点开始“发烧” 如果你正在运营一个WordPress站点,并且发现服务器监控面板上的CPU使用率曲线像过山车一样起伏不定,内存占用率也居高不下,甚至时不时收到主机商的资源超限警告邮件,那么你…

Java运行环境(JRE)配置与生产调优实战指南

Java运行环境(JRE)配置与生产调优实战指南

2026/8/3 7:56:59

1. Java运行环境概述 Java运行环境(JRE)是Java程序执行的必备基础平台,它包含了Java虚拟机(JVM)、核心类库和其他支持文件。与常见的误解不同,JRE并不是简单的"Java安装包"——它是一个完整的运行…

大模型微调 之 LLaMA-Factory安装步骤(Linux)

大模型微调 之 LLaMA-Factory安装步骤(Linux)

2026/8/3 7:46:58

在 Windows WSL2 中安装 LLaMA-Factory 适用场景:Windows 10/11、WSL2 Ubuntu、NVIDIA 显卡、使用 uv 管理 Python 环境、通过 WebUI 运行 LLaMA-Factory。 本文所有 Linux 命令都在 WSL 的 Ubuntu 终端中执行;只有明确标注“Windows PowerShell”的命令…

ncmdumpGUI:一键解锁网易云音乐ncm文件的终极解决方案

ncmdumpGUI:一键解锁网易云音乐ncm文件的终极解决方案

2026/8/3 4:49:52

ncmdumpGUI:一键解锁网易云音乐ncm文件的终极解决方案 【免费下载链接】ncmdumpGUI C#版本网易云音乐ncm文件格式转换,Windows图形界面版本 项目地址: https://gitcode.com/gh_mirrors/nc/ncmdumpGUI 你是否曾经从网易云音乐下载了心爱的歌曲&am…

分布式配置中心选型实战:Nacos与Consul在创业场景下的对比

分布式配置中心选型实战:Nacos与Consul在创业场景下的对比

2026/8/2 0:04:43

分布式配置中心选型实战:Nacos与Consul在创业场景下的对比工程导读:本文深入讨论 分布式配置中心选型实战:Nacos与Consul在创业场景下的对比 在生产工程实践中的核心落地方案。基于 分布式架构与微服务设计 视角,剖析实际痛点、架…

MoneyPrinterPlus实战指南:AI视频批量生成与自动化发布完整解决方案

MoneyPrinterPlus实战指南:AI视频批量生成与自动化发布完整解决方案

2026/8/2 0:04:43

MoneyPrinterPlus实战指南:AI视频批量生成与自动化发布完整解决方案 【免费下载链接】MoneyPrinterPlus AI一键批量生成各类短视频,自动批量混剪短视频,自动把视频发布到抖音,快手,小红书,视频号上,赚钱从来没有这么容易过! 支持本地语音模型chatTTS,fasterwhisper,…

从提示词小白到AI内容架构师(20年技术老兵的6阶能力跃迁图谱,仅剩最后87个免费解读名额)

从提示词小白到AI内容架构师(20年技术老兵的6阶能力跃迁图谱,仅剩最后87个免费解读名额)

2026/8/3 0:06:20

更多请点击: https://codechina.net 第一章:AI写作能力跃迁的认知革命 过去五年,AI写作已从“模板填充”迈入“语义共建”阶段——模型不再仅复述训练数据中的句式,而是基于跨文档推理、意图锚定与风格自适应,动态构建…

AU-48八米拾音的信噪比衰减与降噪门限耦合分析

AU-48八米拾音的信噪比衰减与降噪门限耦合分析

2026/8/3 0:06:20

一、"拾音 8 米"这个指标该怎么读AU-48 的规格里,麦克风拾取范围写的是 10cm-800cm,配合 T1/T2 参数切换可选四档:中距离 0.5-2m、近距离 0.1-0.2m、远距离 0.5-5m、超远距离 0.5-8m。"能拾音 8 米"这句话本身没错&#…

LangChain 从 Demo 到团队落地,真正卡壳的是哪一步?

LangChain 从 Demo 到团队落地,真正卡壳的是哪一步?

2026/8/3 0:06:20

聊《LangChain并不难,难的是知道什么时候不该用》之前,先说一句实在的:别急着背概念,先看它在真实项目里到底解决什么问题。 摘要 摘要:很多人学 LangChain 都是从调个 API 开始,跑通一个 Demo 觉得挺简单…

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

2026/8/2 17:06:42

一天写完毕业论文在2026年已不再是天方夜谭。2026年最炸裂、实测能大幅提速的AI论文写作工具,覆盖选题构思、文献整理、内容生成、格式排版等核心场景,真正帮你高效搞定论文难题。 一、全流程王者:一站式搞定论文全链路(一天定稿首…

导师推荐!2026最新AI论文工具测评与实用推荐

导师推荐!2026最新AI论文工具测评与实用推荐

2026/8/3 7:25:44

2026年真正好用的AI论文工具,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。 一、…

告别游戏崩溃:XCOM 2模组管理器的智能革命

告别游戏崩溃:XCOM 2模组管理器的智能革命

2026/8/3 2:41:27

告别游戏崩溃:XCOM 2模组管理器的智能革命 【免费下载链接】xcom2-launcher The Alternative Mod Launcher (AML) is a replacement for the default game launchers from XCOM 2 and XCOM Chimera Squad. 项目地址: https://gitcode.com/gh_mirrors/xc/xcom2-lau…