☰
Taichi 源码开发环境搭建指南:基于 Conda 创建 taichi-dev 环境与工具链自动注入
2026/10/8 20:33:57 网站建设 项目流程

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-dev

conda_env.yaml 解析

conda/conda_env.yaml 的内容非常精简,是整个环境的"单一事实来源":

name: taichi-dev dependencies: - python=3.8 # Replace this with your favorite Python version
  • name: 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

各变量的作用如下:

环境变量作用说明
CXXC++ 编译器路径指向 clang++(Taichi 建议 Clang >= 10,推荐 Clang 15,详见 开发者安装文档);macOS 可直接使用 Xcode Command Line Tools 自带的 AppleClang
LLVM_DIRLLVM 的 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_LLVMLLVM 后端(Taichi 核心执行引擎)ON
TI_WITH_CUDACUDA 后端(NVIDIA GPU)ON
TI_WITH_VULKANVulkan 后端(需要提前装好 Vulkan SDK)OFF
TI_WITH_METALMetal 后端(macOS)ON
TI_WITH_OPENGLOpenGL 后端ON
TI_BUILD_TESTS同时构建 C++ 测试OFF
TI_WITH_C_APITaichi 运行时 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 的执行流程如下:

  1. 校验环境(第 3-6 行):检查CONDA_DEFAULT_ENV是否为taichi-dev,不是则报错退出——这是为了防止把配置装进错误的环境;
  2. 定位脚本目录(第 9-10 行):通过pwd -P解析脚本自身绝对路径,得到scripts/子目录;
  3. 写入激活钩子(第 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),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询