nuitka系列: 将py转为pyd文件
最近做相关的工作,发现网上相关的内容解释还不够或者比较零散,这里以实际的项目示例方便大家快速进行编译。
项目示例
假设有个项目如下,demo.py需要调用test_1.py,test_2.py以及package_1,package_2,或者它们除demo.py外,test_2.py会调用test_1.py,package_1中的子模块会调用package_2中的子模块等等,都适用。
│ demo.py
│ test_1.py
│ test_2.py
│
├─package_1
└─package_2
转换脚本示例
Windows版
将下面代码保存成*.bat文件,例如test.bat,在终端输入test.bat
即可批量执行。
python -m nuitka --module package_1 --include-package=package_1 --output-dir=../dst_code
python -m nuitka --module package_2 --include-package=package_2 --output-dir=../dst_code
python -m nuitka demo.py ^
--module ^
--include-module=test_1 ^
--include-module=test_2
Linux版
将下面代码保存成*.sh文件,例如test.sh,在终端输入sh test.sh
即可批量执行。
python -m nuitka --module package_1 --include-package=package_1 --output-dir=../dst_code
python -m nuitka --module package_2 --include-package=package_2 --output-dir=../dst_code
python -m nuitka demo.py \
--module \
--include-module=test_1 \
--include-module=test_2
调用生成的pyd文件
新建一个main.py文件,像正常调用python模块或者包一样调用pyd文件,一般生成的pyd文件会相比py文件多了一些信息,例如会生成demo.cp310-win_amd64.pyd
这样的文件,可以正常调用的,不需要改名。
清除生成的文件
nuitka编译生成的文件有*.build,pyi,.pyd文件
以windows为例,在生成的dst_code目录下执行下面命令即可。
rm -r *.build
del /s /q *.pyi
del /s /q *.pyd