---
title: UDF Python工程创建工具
description: "该工具的作用是创建一个UDF Python工程模板，包括对应的文件夹和文件，用户可以基于该模板进行功能的开发，减少了手工创建的工作量。"
url: https://www.hiascend.com/document/detail/zh/canncommercial/latest/others/dataflowdevg/dfdevp_23_0034.html
sourcePath: /source/zh/canncommercial/900/others/dataflowdevg/dfdevp_23_0034.html
indexId: 5dec300155e9e9afdf3d0bb14912148b30d2709aa27d023e05c363de76d1350069
---
# UDF Python工程创建工具

该工具的作用是创建一个UDF Python工程模板，包括对应的文件夹和文件，用户可以基于该模板进行功能的开发，减少了手工创建的工作量。

该工具存放路径：${install_path}/cann/python/site-packages/dataflow/tools/create_func_ws.py，其中${install_path}为CANN软件的安装目录，默认是"/usr/local/Ascend"。

使用方法如下。

1. 设置环境变量。
  安装CANN软件后，使用CANN运行用户进行编译、运行时，需要以CANN运行用户登录环境，执行source ${INSTALL_DIR}/set_env.sh命令设置环境变量。${INSTALL_DIR}请替换为CANN软件安装后文件存储路径。以root用户安装为例，安装后文件默认存储路径为：/usr/local/Ascend/cann。

2. 创建UDF Python工程。
如下以创建工作目录为“test_sub”的工程为例，说明如何创建。
在任意路径下执行如下命令。

```
python3.11 -m dataflow.tools.create_func_ws -f sub:i0:i1:o0 -w ./test_sub -c Sub
```

在当前目录下，生成如下“test_sub”文件夹，目录结构如下。
```
├── CMakeLists.txt  // CMakeLists编译配置文件，一般不需要用户改动。如果打包需要特殊处理可以修改，比如打包时增加配置文件发布。
├── func_sub.json // UDF配置文件，用于指定UDF的输入，输出等，一般不需要用户改动，如果生成工作workspace目录和实际运行时不一致，需要修改文件中workspace参数为实际运行时路径。
├── src_cpp
│   └── func_sub.cpp  // 完成UDF注册，以及UDF的C++调用Python的逻辑，不需要用户改动。
└── src_python
└── func_sub.py  // 用户的实现函数，需要用户自行编写，当前目录下可以增加多个Python文件，打包时会一并打包到运行环境。
```


命令中各参数含义如下。

  - -m：必选参数，Python命令行通用参数，作为脚本运行库模块，该工具中固定为dataflow.tools.create_func_ws。
  - -f：必选参数，输入函数信息、输入和输出索引，格式为“函数名:ix:ix:ox:ox”，i开头表示输入，后面跟输入索引，o开头表示输出，后面跟输出索引，多个函数的话中间以半角逗号分隔。例如，sub:i0:i1:o0，该示例中，函数名为sub（会直接作为Python函数名，建议采用小写加下划线风格，同时生成的cpp代码会按照大驼峰拼接“Proc”作为cpp函数），两个输入：i0和i1，一个输出o0。
  - -w：可选参数，工作目录。例如，./test_sub，该示例中，指定工作目录是当前目录下的“test_sub”，默认值为当前目录“./”，注意：生成的文件会直接覆盖工作空间中重名的文件。
  - -c：可选参数，函数类名。例如，Sub(会直接作为Python和c++类名，建议使用大驼峰风格)，为空时会使用-f参数中的函数名拼接生成。

该工具的更多使用参数请通过“-h”进行查看。
