flexloopy.config.env 源代码

"""环境配置模块

该模块用于在本地或CI环境中统一设置与 TVM、VTA 以及第三方工具链相关的 Python 路径与环境变量,确保调用端能够顺利 `import` 对应包并运行示例或训练/编译流程。

使用说明:

- 在项目启动脚本或交互式会话中调用 ``set_tvm`` 指定 TVM 源码根目录;必要时调用 ``set_caffeproto`` 指定 CaffeProto 根目录。
- 本模块仅添加路径和环境变量,不会改变 TVM/VTA 的功能实现。

示例:

    >>> from flexloopy.config.env import set_tvm, set_caffeproto
    >>> set_tvm("/path/to/tvm")
    >>> set_caffeproto("/path/to/CaffeProto")

.. tip::
    路径分隔符在不同操作系统上不同,Windows 为 ``;``,Unix/Linux 为 ``:``。

    本模块对 ``sys.path`` 的处理跨平台,`PYTHONPATH` 的格式请按实际平台调整。
"""
import sys
import os
from pathlib import Path


[文档] def set_tvm(tvm_root: str|Path) -> None: """配置 TVM/VTA 的 Python 依赖路径与环境变量 Args: tvm_root (str | Path): TVM 源码工程的根目录路径,可以是 `str` 或 `pathlib.Path`。应指向包含 `python/` 与 `vta/python/` 子目录的仓库根。 Returns: None: 函数会原地更新 `sys.path` 和部分 `os.environ` 项以便后续可直接 `import tvm` 与 `import vta`。 使用示例: >>> from flexloopy.config.env import set_tvm >>> set_tvm("D:/dev/tvm") >>> import tvm, vta # 成功导入即表示环境设置生效 """ tvm_root = Path(tvm_root) TVM_PATH = str(tvm_root/'python') # TVM 的 Python 包所在目录,例如 <tvm_root>/python VTA_PATH = str(tvm_root/'vta/python') # VTA 的 Python 包所在目录,例如 <tvm_root>/vta/python # sys.path.extend([TVM_PATH, VTA_PATH]) for path in [TVM_PATH, VTA_PATH]: if path not in sys.path: sys.path.extend([path]) # os.environ['TVM_HOME'] = str(tvm_root) os.environ['PYTHONPATH'] = f"{TVM_PATH}:{VTA_PATH}" + ":${PYTHONPATH}" # 追加到 PYTHONPATH;Windows 建议改用分号 `;` 分隔
[文档] def set_caffeproto(caffeproto_root: str|Path="../../../tests/caffeproto") -> None: """配置 CaffeProto 的 Python 依赖路径(仅用于测试,暂未在项目中使用) Args: caffeproto_root (str | Path, optional): CaffeProto 工程根目录路径,默认相对路径 `../../../tests/caffeproto`。应包含 `python/` 子目录。 Returns: None: 函数会在 `sys.path` 中追加 `caffeproto_root/python`,避免重复添加。 使用示例: >>> from flexloopy.config.env import set_caffeproto >>> set_caffeproto("D:/dev/CaffeProto") >>> import caffe # 如项目提供对应 Python 包 """ caffeproto_root = Path(caffeproto_root) CaffeProto_PATH = str(caffeproto_root/'python') # CaffeProto 的 Python 包目录 if CaffeProto_PATH not in sys.path: sys.path.extend([CaffeProto_PATH])
# 以下为可选的环境示例(默认注释),根据需要开启: # def set_mxnet(): # # 关闭 MXNet 的部分自动调优与库检查以规避某些平台兼容性问题 # os.environ['MXNET_CUDNN_AUTOTUNE_DEFAULT'] = '0' # 取值范围:'0' 或 '1' # os.environ['MXNET_CUDNN_LIB_CHECKING'] = '0' # 取值范围:'0' 或 '1' # def set_cudnn(cuda_path:str|Path="/usr/local/cuda/bin", # LD_LIBRARY_PATH:str|Path="/usr/local/cuda/lib64"): # # 为运行时加入 CUDA 的可执行与动态库路径;Unix 系统示例 # os.environ["PATH"] += f":{cuda_path}" # os.environ["LD_LIBRARY_PATH"] = LD_LIBRARY_PATH # def import_tvm(tvm_root): # # 便捷导入示例:设置路径后导入 tvm/vta 并返回模块对象 # from importlib import import_module # set_tvm(tvm_root) # tvm = import_module('tvm') # vta = import_module('vta') # return tvm, vta