ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

RimSort 开发环境配置与构建指南:从源码运行到 Nuitka 打包

RimSort 开发环境配置与构建指南:从源码运行到 Nuitka 打包 桌面应用游戏开发CLI【免费下载链接】RimSortRimSort is an open source mod manager for the video game RimWorld. There is support for Linux, Mac, and Windows, built from the ground up to be a reliable, community-managed alternative to RimPy Mod Manager.项目地址https://gitcode.com/gh_mirrors/ri/RimSort点击查看免费下载本指南以仓库文档 docs/development-guide/development-setup.zh-cn.md 为主体完整介绍 RimSort 的本地开发环境搭建、源码运行、开发模式数据隔离以及基于distribute.py与 Nuitka 的分发构建流程。读完本文你将掌握如何在 Windows、macOS、Linux 上从零配置 RimSort 开发环境正确处理 SteamworksPy 与 todds 等特殊依赖并产出可分发的二进制构建产物。技术栈与构建路线总览RimSort 是使用 Python 编写的 RimWorld 模组管理器GUI 层基于 PySide6Qt 的 Python 绑定最终通过 Nuitka 将应用编译为各平台原生可执行文件。其整体构建路线可以概括为依赖管理统一由 uv。开发任务编排由 just。特殊原生依赖SteamworksPy本地 Steam 客户端交互和 todds纹理优化需要额外处理。打包分发distribute.py脚本串联子模块初始化、SteamworksPy 处理、todds 下载与 Nuitka 编译。从 pyproject.toml 可以看到项目要求requires-python 3.12.*运行时依赖包括pyside66.11.2、loguru、networkx、pygit2、steam、steamfiles、watchdog、zstandard等开发依赖组dev包含 mypy、pyright、pytest 系列与 ruff构建依赖组build则仅包含nuitka4.2.2。前置条件操作系统支持基线RimSort 支持 Windows、macOS 和 Linux但官方发布构建仅面向 UbuntuUbuntu 是构建基线其他发行版可能也能运行但不作为 CI 验证对象。操作系统必须满足 PySide6 的支持范围官方发布构建使用的 GitHub runner 如下平台runner架构Linuxubuntu-22.04/ubuntu-24.04x86_64macOSmacos-15-intelx86_64macOSmacos-latestarm64Windowswindows-latestx86_64必需工具必需工具git克隆仓库与子模块Python 3.12项目锁定的解释器版本也可通过 uv 安装uv包与项目管理器just开发命令任务运行器代码质量检查工具由just check与 CI 使用Node.js / npx用于 JSCPD 复制粘贴检测just jscpdshfmtshell 脚本格式化just shfmtPython 侧的质量工具ruff、mypy、pyright、pytest 等由uv sync自动安装无需手动设置。完整的质量检查配方super-linter、typecheck、pyright、jscpd、markdownlint、shfmt、deferred-imports 守卫等均定义在 justfile 中。克隆仓库与子模块RimSort 使用托管在其他仓库的子模块必须同步克隆steamfilessubmodules/steamfiles用于解析 Steam 客户端的 acf/appinfo/manifest 信息SteamworksPysubmodules/SteamworksPy直接对接 Steamworks API 的 Python 模块使 RimSort 能通过 Python 经由 Steamworks API 与本地 Steam 客户端交互例如订阅/取消订阅 Steam 工坊模组带子模块克隆git clone --recurse-submodules -j8 https://github.com/RimSort/RimSort若忘记使用--recurse-submodules克隆或需要更新子模块git submodule update --init --recursivejustfile中的submodules-init配方执行的正是这条命令just dev-setup会先自动调用它。配置开发环境RimSort 使用 uv 作为 Python 包与项目管理器虚拟环境、依赖锁定与依赖组均由 uv 统一处理。一键配置just dev-setup配置全部内容子模块、venv、开发及构建依赖最简单的方式just dev-setup根据 justfile 的定义该配方实际执行git submodule update --init --recursive uv sync --locked --dev --group build just i18n-compile即先初始化子模块再以锁定模式安装运行时、开发与构建依赖含 ruff、mypy 等检查工具最后用pyside6-lrelease将 locales 下的.ts翻译文件编译为.qm二进制应用加载多语言所必需。配置完成后安装共享 git hooks使每次提交前自动运行just checkjust install-hooks该命令设置git config core.hooksPath .githooks把代码质量检查作为提交前置门禁。手动配置uv sync如果偏好手动控制uv sync --dev # 安装运行时 开发依赖代码检查工具、测试工具等 uv sync --group build # 额外安装构建依赖nuitka 等依赖的分组结构定义在 pyproject.tomldev组提供 mypy、pyright、pytest、pytest-qt、pytest-cov、ruff 等build组提供 Nuitka。从源码运行 RimSort完成前置步骤后从项目根目录启动uv run python -m app入口位于 app/main.py它会先处理--dev、--disable-updater等全局参数然后通过AppInfo确定存储目录初始化日志app/utils/log_setup.py获取单实例锁app/utils/single_instance.py最后启动AppController。若在 Nuitka 编译环境下__compiled__存在还会设置QTWEBENGINE_LOCALES_PATH并在非 Linux 平台改用spawn多进程方式。开发模式数据隔离RimSort 支持开发模式dev mode它将所有用户数据设置、日志、数据库、模组列表、主题、备份重定向到仓库根目录下的dev/子目录而不是平台标准的应用程序数据目录从而避免开发运行时破坏生产环境配置。启用方式uv run python -m app --dev开发模式下的变化设置存储于dev/data/settings.json日志写入dev/logs/数据库、模组列表和备份位于dev/data/下默认启用调试级别日志窗口标题带有[DEV]后缀dev/目录在.gitignore中不会被提交。从源码看--dev标志在 app/main.py 中于任何初始化之前被转换为环境变量RIMSORT_DEV1真正的路径重定向逻辑位于 app/utils/app_info.py开发模式下_app_storage_folder指向dev/data、_user_log_folder指向dev/logs而生产模式则通过platformdirs解析平台标准数据目录。对应测试见 tests/utils/test_app_info_dev_mode.py覆盖了默认关闭、环境变量强制开关、路径重定向与自定义目录等场景。环境变量覆盖变量取值作用RIMSORT_DEV1、true强制开启开发模式等价于--devRIMSORT_DEV0、false强制关闭开发模式覆盖--devRIMSORT_DEV_DIR绝对路径覆盖开发数据根目录仅当开发模式启用时RIMSORT_DEV的解析实现于 app/utils/app_info.py1/true视为开启0/false视为关闭未设置则默认关闭其他非法值会记录警告日志。使用自定义开发数据目录RIMSORT_DEV_DIR/tmp/rimsort-test uv run python -m app --dev或仅通过环境变量RIMSORT_DEV1 RIMSORT_DEV_DIR/tmp/rimsort-test uv run python -m app自动构建流程distribute.py是基本全自动的构建入口运行uv run python distribute.py该脚本会为当前平台构建 RimSort 并输出包含全部依赖和子模块的构建产物。其流程见 distribute.py为初始化/更新 git 子模块get_rimsort_submodules复制或按需编译SteamworksPy 库copy_swp_libs/build_steamworkspy抓取最新 todds 发行版get_latest_todds_release用 Nuitka 编译应用freeze_applicationmacOS 上执行.appbundle 修复与瘦身post_build_fixup_macos_steamworks/post_build_optimize_macos_bundle额外选项参见uv run python distribute.py --help。根据 distribute.py 的 argparse 定义支持以下参数参数作用-d/--dev启用开发模式构建Windows 下强制附加控制台--skip-submodules跳过 git 子模块初始化--skip-steamworkspy跳过 SteamworksPy 库复制--build-steamworkspy从源码编译 SteamworksPy 而非复制可配合--sdk-url/--sdk-zip--sdk-url指定下载 Steamworks SDK 的 URL默认使用脚本内置地址--sdk-zip从本地 zip 提取 Steamworks SDK--skip-todds跳过下载最新 todds 发行版--skip-build跳过 Nuitka 编译--product-version指定构建版本号格式MAJOR.MINOR.PATCH.INCREMENT手动构建若只想手动驱动构建需先确保构建依赖已安装uv sync --group build配置附加依赖项RimSort 的大部分 Python 依赖可通过 pyproject.toml 安装查看并在环境配置步骤中完成。但SteamworksPy是特例需要特别处理。在项目根目录下需要为当前平台准备编译好的 SteamworksPy 库文件以及 Steamworks SDK 的二进制文件配合子模块 submodules/SteamworksPy/library 中的 Python 模块一起使用仓库维护者会提供预编译的 SteamworksPy 二进制steamworks-sdk 的 redistributables 也会随仓库及各平台发布版本一并提供本仓库即包含 libs/ 下的SteamworksPy_x86_64.so、SteamworksPy64.dll、libsteam_api.*、steam_api*.lib等Linux将SteamworksPy_*.so*为 CPU 架构复制为SteamworksPy.somacOS将SteamworksPy_*.dylib*为 CPU 架构复制为SteamworksPy.dylib关于库文件的加载路径app/utils/app_info.py 中的libs_folder属性做了区分Nuitka 编译产物中库文件位于应用根目录macOS 为.app/Contents/MacOS/源码开发模式下则位于libs/子目录。从源码构建 SteamworksPy撰写本文时SteamworksPy 模块只能使用 Python 11 构建与 RimSort 本身Python 3.12不同可能需要使用独立的 Python 环境。配置该模块cd SteamworksPy pip install -r requirements.txt这是一项可选步骤——仓库已提供预编译二进制各平台发布版本中亦已包含。未经维护者同意请勿提交/发起更新这些二进制的 PR此类请求不会被批准。平台编译要求Linux需要gUbuntu 上开箱即用macOS需要 Xcode 命令行工具可直接通过脚本编译无需完整安装 XcodeWindows需要 Visual Studio 与 Visual Studio 构建工具MSVC安装时选择「使用 C 的桌面开发」工作负荷或直接安装带标准工具集的 VS Community 2022执行编译python -c from distribute import build_steamworkspy; build_steamworkspy()该函数在 distribute.py 中实现会下载/提取 Steamworks SDK默认地址https://partner.steamgames.com/downloads/steamworks_sdk_163.zip复制头文件与libsteam_api/steam_api.lib然后按平台执行编译命令Darwin/Linux 用g编译SteamworksPy.cppWindows 通过vcvars64.bat环境下的cl.exe编译 DLL最后将产物复制到 libs/ 与项目根目录。纹理优化依赖toddsRimSort 使用 todds 作为纹理优化依赖已随发布版本打包进二进制发行版。若从源码构建/运行需将 todds 二进制放置在Linux/Mac./todds/toddsWindows.\todds\todds.exe打包时get_latest_todds_release()distribute.py会查询joseasoler/todds的 latest release按平台与架构匹配对应 zip 资产如todds_Linux_x86_64_tag.zip、todds_Windows_tag.zip下载解压到todds/目录并补上可执行权限若设置了GITHUB_TOKEN环境变量则用于鉴权。最终这些二进制会被 rimsort.nuitka-package.config.yml 中的 Nuitka 用户配置收录进构建产物。Nuitka 打包细节打包可分发的 RimSort 二进制完全由distribute.py自动化。若需要直接驱动 Nuitka例如本地迭代请注意 distribute.py 中的freeze_application()会先把submodules/SteamworksPy加入PYTHONPATH再编译app/包。真实构建请优先使用distribute.py脚本而不是手动调用 Nuitka。Nuitka 的编译参数主要声明在 app/main.py 顶部的nuitka-project注释中启用 pyside6 插件、输出文件名RimSort、输出目录build/、随包包含steam_appid.txt与version.xml、排除 numpy 等macOS 使用--modeapp生成.appbundle其他平台使用--modestandalone。额外的数据文件themes、locales、update 脚本与动态库收录规则则定义在 rimsort.nuitka-package.config.yml 中包括将 libs/ 下各平台的steam*/Steam*库、todds可执行文件打入构建产物。macOS 注意事项GatekeeperMac 用户应注意 Apple 的运行时保护机制 Gatekeeper它可能导致运行 RimSort或执行相关依赖库时出现问题。可通过xattr命令手动加入白名单xattr -d com.apple.quarantine /path/to/RimSort.app xattr -d com.apple.quarantine /path/to/libsteam_api.dylib将/path/to/替换为文件/文件夹的实际路径例如xattr -d com.apple.quarantine /Users/John/Downloads/RimSort.app另外macOS 构建完成后distribute.py还会执行两个收尾步骤distribute.pypost_build_fixup_macos_steamworks确保.appbundle 内存在SteamworksPy.dylib按宿主 CPU 架构挑选最优候选post_build_optimize_macos_bundle调用 packaging/optimize_macos_bundle.py 对 fat binary 瘦身以减小体积。常用开发命令速查just是开发流程的入口常用配方全部定义于 justfile命令作用just dev-setup初始化子模块并安装全部依赖运行时 开发 构建编译 i18njust run运行应用等价于uv run python -m appjust test/just test-verbose/just test-coverage运行 pytest 测试含覆盖率报告just check运行完整代码质量检查Linux 下为 super-linter typecheck pyrightjust fix自动修复 lint/格式问题just build/just build-version VERSION先跑检查与 i18n 编译再执行distribute.py构建just install-hooks安装 pre-commit 质量门禁just i18n-update/just i18n-compile提取可翻译字符串 / 编译.ts→.qmjust clean清理构建产物与缓存just ci本地模拟完整 CI质量检查 带覆盖率的测试小结RimSort 的开发与构建链路高度工具化git 子模块负责源码完整性uv负责可复现的依赖环境just封装日常开发与质量门禁distribute.py串联特殊原生依赖SteamworksPy、todds与 Nuitka 编译。开发模式下通过--dev与RIMSORT_DEV/RIMSORT_DEV_DIR环境变量实现用户数据隔离是安全迭代的关键开关。读者可在此基础上继续阅读仓库内 docs/development-guide/contributor-guidelines.zh-cn.md贡献规范与 docs/development-guide/translation-guide.zh-cn.md翻译指南以深入了解项目协作流程。赞分享桌面应用游戏开发CLI【免费下载链接】RimSortRimSort is an open source mod manager for the video game RimWorld. There is support for Linux, Mac, and Windows, built from the ground up to be a reliable, community-managed alternative to RimPy Mod Manager.项目地址https://gitcode.com/gh_mirrors/ri/RimSort点击查看免费下载相关推荐RimSort 开发环境搭建与构建指南从源码运行到跨平台二进制打包RimSort 开发环境搭建与构建指南从源码运行到跨平台二进制打包 本指南以 docs/development guide/development setup桌面应用游戏开发CLIAALCAhabAssistantLimbusCompany源码构建指南从 Python 3.12 环境配置到 PyInstaller 打包发布AALCAhabAssistantLimbusCompany源码构建指南从 Python 3.12 环境配置到 PyInstaller 打包发布 本篇指南桌面应用RPA计算机视觉GPSTest项目构建指南从环境配置到打包发布GPSTest项目构建指南从环境配置到打包发布 前言 GPSTest是一款功能强大的GPS测试工具本文将从技术角度详细介绍如何构建该项目。无论您是使用And移动开发上一篇Windows系统日志实时监控5分钟快速搭建专业Syslog服务器下一篇5个实战技巧用Goodbooks-10K数据集构建智能图书推荐系统创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表