Taichi 源码开发环境搭建指南:基于 Conda 创建 taichi-dev 环境与工具链自动注入
【免费下载链接】taichiProductive, portable, and performant GPU programming in Python.项目地址: https://gitcode.com/GitHub_Trending/ta/taichi
导读
本文讲解如何在 Linux/macOS 上使用 Conda 为 Taichi(taichi-lang)源码开发搭建隔离的 Python 环境taichi-dev:从创建环境、安装开发依赖,到通过 Conda 的activate.d机制自动注入 C++ 编译器、LLVM 工具链与 CMake 构建参数。读完本文,你将掌握一套可复现的 Taichi 源码编译前置环境配置流程,并能按需定制工具链变量,为后续setup.py develop开发模式或完整 wheel 构建做好准备。
适用场景与前置条件
conda/README.md定位明确:这是一份面向 Taichi 源码开发者的环境准备指南,而非普通用户的pip install taichi安装教程。普通用户无需构建源码,直接通过 pip 安装即可;只有当你要参与编译器、图形学或高性能计算相关功能的开发时,才需要按本文流程搭建开发环境。
平台限制
仓库conda/README.md明确注明:目录中提供的脚本目前只支持 Linux 与 macOS。Windows 用户需要等价的 bat 脚本,当前仓库中尚无对应实现(见 conda/README.md)。这意味着本流程依赖 POSIX shell 与 bash 特性,Windows 上请另寻 WSL 或等待社区补充。
安装 Conda
环境管理依赖 Conda(Miniconda 即可)。请从 Conda 官方渠道下载并安装与你操作系统匹配的 Miniconda,安装完成后确保conda命令可用。后续所有操作都基于命令行完成。
第一步:创建 taichi-dev 开发环境
进入仓库的conda目录,用conda_env.yaml声明式地创建环境:
# 假设你位于仓库根目录 $ cd conda $ conda env create -f conda_env.yaml $ conda activate taichi-devconda_env.yaml 解析
conda/conda_env.yaml 的内容非常精简,是整个环境的"单一事实来源":
name: taichi-dev dependencies: - python=3.8 # Replace this with your favorite Python versionname: taichi-dev:环境名固定为taichi-dev,后续update_env_vars.sh会校验这个名称,因此不要随意改名;python=3.8:文件头部注释明确指出可以替换为你喜欢的 Python 版本。结合仓库 setup.py 中声明的 classifier,Taichi 源码构建支持 Python 3.7~3.11,因此按需选择即可(例如 3.10 是常见选择)。
环境的日常更新
conda_env.yaml顶部注释给出了环境更新的标准姿势:
conda activate taichi-dev conda env update --file conda_env.yaml --prune其中--prune会移除环境中不再被 YAML 声明的多余包,保证环境与声明文件严格一致。这与 Conda 官方推荐的"以 YAML 为单一来源管理环境"的做法一致。
第二步:安装开发依赖
环境创建成功后,还需要把仓库根目录的requirements_dev.txt中的开发依赖装进taichi-dev:
# 注意:这只会把依赖安装到 'taichi-dev' 环境中 (taichi-dev) $ python3 -m pip install -r ../requirements_dev.txt注意这里使用的是python3 -m pip而非裸pip,确保安装目标是当前激活的 conda 环境,而不是系统的 pip。
requirements_dev.txt 中的依赖一览
requirements_dev.txt 是 Taichi 源码开发所需的 Python 侧工具链,可分为几类:
构建与打包:
cmake:C++ 侧构建系统的驱动工具;scikit-build:桥接 setuptools 与 CMake 的打包框架,仓库根目录 setup.py 正是通过from skbuild import setup来构建taichi_pythonC++ 扩展;pybind11:Taichi Python 绑定层的 C++ 库(对应taichi/python与taichi/program的导出实现);ninja; platform_system != 'Windows':Ninja 构建后端(非 Windows 平台安装),显著加速增量编译;wheel与twine:wheel 包构建与发布上传;numpy:数值计算基础库,Taichi Python 侧与 ndarray 交互依赖它。
代码质量与协作:
yapf(格式化)、isort(import 排序)、pylint(静态检查)、pre-commit(提交前钩子);GitPython:构建/发布脚本中执行 Git 相关操作时使用。
测试与辅助:
coverage:测试覆盖率统计;Pillow:图像读写(Taichi 示例与图像 I/O 测试需要);requests:CI 与发布脚本的 HTTP 请求;astunparse:AST 反解析,用于 Taichi 的 Python AST 前端处理;distro:跨发行版识别 Linux 发行版(构建脚本判断系统时使用);colorama:终端彩色输出。
第三步:配置工具链环境变量
Taichi 的源码构建依赖 C++ 编译器和 LLVM 工具链。conda/scripts/activate_env_vars.sh提供了这些环境变量的声明模板,供你按本机实际情况填写:
#!/bin/sh set -x ### Path to clang++ ### # export CXX=/path/to/clang++ ### LLVM toolchain directory ### # export LLVM_DIR=/usr/local/lib/cmake/llvm ### Additional CMake args for building Taichi ### # export TAICHI_CMAKE_ARGS="-DCMAKE_CXX_COMPILER=clang++" ### Number of threads used when running Taichi tests ### # export TI_TEST_THREADS=4 set +x各变量的作用如下:
| 环境变量 | 作用 | 说明 |
|---|---|---|
CXX | C++ 编译器路径 | 指向 clang++(Taichi 建议 Clang >= 10,推荐 Clang 15,详见 开发者安装文档);macOS 可直接使用 Xcode Command Line Tools 自带的 AppleClang |
LLVM_DIR | LLVM 的 CMake 配置目录 | 通常形如<llvm-install>/lib/cmake/llvm,用于让 CMake 找到 LLVM 15 工具链 |
TAICHI_CMAKE_ARGS | 额外的 CMake 构建参数 | 控制是否启用 Vulkan/CUDA 等后端,是源码构建最常用的开关 |
TI_TEST_THREADS | 运行 Taichi 测试时使用的线程数 | 控制测试并行度,避免测试互相干扰 |
TAICHI_CMAKE_ARGS 常用开关
TAICHI_CMAKE_ARGS是 setup.py 明确支持的构建变量,用于向 C++ 侧taichi_python扩展传递额外 CMake 参数。根据 开发者安装文档 中整理的后端开关表,常用组合例如:
export TAICHI_CMAKE_ARGS="-DTI_WITH_VULKAN:BOOL=ON -DTI_WITH_CUDA:BOOL=ON"常用开关速查(默认值取自开发者安装文档):
| CMake 开关 | 说明 | 默认 |
|---|---|---|
TI_WITH_LLVM | LLVM 后端(Taichi 核心执行引擎) | ON |
TI_WITH_CUDA | CUDA 后端(NVIDIA GPU) | ON |
TI_WITH_VULKAN | Vulkan 后端(需要提前装好 Vulkan SDK) | OFF |
TI_WITH_METAL | Metal 后端(macOS) | ON |
TI_WITH_OPENGL | OpenGL 后端 | ON |
TI_BUILD_TESTS | 同时构建 C++ 测试 | OFF |
TI_WITH_C_API | Taichi 运行时 C-API 库 | ON |
修改activate_env_vars.sh后,需要重新执行环境变量注入脚本才能生效(见下一步)。
第四步:用 Conda activate.d 机制自动注入环境变量
手动export的变量在每次新开终端后都会丢失。仓库提供的update_env_vars.sh利用 Conda 官方支持的activate.d钩子机制,把activate_env_vars.sh安装进当前环境的激活目录,实现conda activate taichi-dev时自动加载工具链配置。
update_env_vars.sh 的工作原理
conda/update_env_vars.sh 的执行流程如下:
- 校验环境(第 3-6 行):检查
CONDA_DEFAULT_ENV是否为taichi-dev,不是则报错退出——这是为了防止把配置装进错误的环境; - 定位脚本目录(第 9-10 行):通过
pwd -P解析脚本自身绝对路径,得到scripts/子目录; - 写入激活钩子(第 16-25 行):进入
$CONDA_PREFIX(当前 conda 环境的安装根目录),创建etc/conda/activate.d/目录,将scripts/activate_env_vars.sh复制为env_vars.sh。
从此,每次执行conda activate taichi-dev,Conda 都会自动 sourceetc/conda/activate.d/env_vars.sh,其中的CXX、LLVM_DIR、TAICHI_CMAKE_ARGS、TI_TEST_THREADS等变量便自动就位,无需手动 export。
执行注入
先按上一步编辑好 conda/scripts/activate_env_vars.sh,然后在conda目录下执行:
$ conda activate taichi-dev (taichi-dev) $ ./update_env_vars.sh由于脚本内部开启了set -x,执行时会打印每一步操作的详细信息,便于确认钩子安装位置与复制结果。
验证环境与后续开发
环境就绪后可以验证:
(taichi-dev) $ which python # 应指向 conda 环境内的 python (taichi-dev) $ echo $TAICHI_CMAKE_ARGS # 确认工具链变量已自动加载 (taichi-dev) $ echo $TI_TEST_THREADS确认无误后,即可继续参考仓库的 开发者安装文档 完成 Taichi 源码构建——典型流程是python3 setup.py develop进入开发模式(Python 改动即时生效),或./build.py构建可分发的 wheel。
常见问题与排错
update_env_vars.sh报 "Please run inside taichi-dev conda env":说明当前未激活taichi-dev环境,先执行conda activate taichi-dev。python3 setup.py develop报 permission denied:多半是当前 Python 环境无写权限。开发者安装文档给出的两条出路:改用--user安装,或如本文所示使用 Conda 环境内的 Python——这也是本流程存在的意义之一。- 编译时找不到 spdlog 等头文件:说明克隆仓库时未带
--recursive拉取子模块,需执行git submodule update --init --recursive --depth=1(子模块依赖见仓库 external/ 目录)。 which python仍指向系统 Python:确保conda activate taichi-dev已生效,并检查$CONDA_DEFAULT_ENV输出是否为taichi-dev。
小结
Taichi 源码开发环境的搭建核心可以概括为三件事:用 conda/conda_env.yaml 声明式创建taichi-dev环境、用 requirements_dev.txt 补齐 Python 侧构建/测试工具链、再通过 conda/update_env_vars.sh 把 conda/scripts/activate_env_vars.sh 注册为 Conda 激活钩子,实现编译器与 LLVM 工具链的自动注入。这套"环境声明 + 依赖清单 + 钩子注入"的组合,让每个开发者都能在 Linux/macOS 上快速获得一致的、可复现的 Taichi 源码编译环境。当前仓库版本为 v1.8.0,本文流程适用于该版本及其对应分支的源码开发。
【免费下载链接】taichiProductive, portable, and performant GPU programming in Python.项目地址: https://gitcode.com/GitHub_Trending/ta/taichi
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考