python代码编译成库
一、项目结构如下:
your_project/
├── match/
│ ├── __init__.py # 空文件,声明为包
│ └── matcher.py # 包含 compete_image 类
├── stitch/
│ ├── __init__.py # 空文件,声明为包
│ └── total_stich_side.py # 包含 TotalStich_side 类
└── multiReadStitchClassClasss_side.py # 主模块,包含 multiDealImg 类
2、确保代码中的导入正确
stitch/total_stich_side.py
from match.matcher import compete_image # 绝对导入
class TotalStich_side:
def __init__(self):
self.processor = compete_image
multiReadStitchClassClasss_side.py
from stitch.total_stich_side import TotalStich_side
from match.matcher import compete_image
class multiDealImg:
def __init__(self):
self.stitcher = TotalStich_side()
self.image_processor = compete_image()
3. 编译步骤
步骤 1:编译底层模块 match/matcher.py
nuitka --module match/matcher.py \
--output-dir=build/match \
--include-package=match
--output-dir=build/match:将编译后的.so文件输出到build/match。--include-package=match:确保match包被包含。
步骤 2:编译中间模块 stitch/total_stich_side.py
nuitka --module stitch/total_stich_side.py \
--output-dir=build/stitch \
--include-package=stitch \
--include-module=match.matcher # 显式包含依赖的 match 模块
步骤 3:编译主模块 multiReadStitchClassClasss_side.py
nuitka --module multiReadStitchClassClasss_side.py \
--output-dir=build \
--include-package=match \
--include-package=stitch \
--follow-import-to=stitch.total_stich_side \
--follow-import-to=match.matcher
4. 编译后目录结构
编译完成后,目录结构如下:
your_project/
└── build/
├── match/
│ ├── match.so # 或 .pyd(Windows)
│ └── __init__.so # 包的 __init__ 文件(自动生成)
├── stitch/
│ ├── total_stich_side.so
│ └── __init__.so
└── multiReadStitchClassClasss_side.so
5. 测试程序
创建 test.py 并放置在 项目根目录(与 build 同级):
import sys
import os
# 添加编译后的模块路径
sys.path.extend([
os.path.abspath("build"), # 主模块路径
os.path.abspath("build/match"), # match 包路径
os.path.abspath("build/stitch") # stitch 包路径
])
from multiReadStitchClassClasss_side import multiDealImg
# 实例化并运行
processor = multiDealImg()
print("所有模块调用成功!")
6. 完整编译脚本
# 清理旧编译文件
rm -rf build/# 编译 match 模块
nuitka --module match/matcher.py \
--output-dir=build/match \
--include-package=match# 编译 stitch 模块
nuitka --module stitch/total_stich_side.py \
--output-dir=build/stitch \
--include-package=stitch \
--include-module=match.matcher# 编译主模块
nuitka --module multiReadStitchClassClasss_side.py \
--output-dir=build \
--include-package=match \
--include-package=stitch \
--follow-import-to=stitch.total_stich_side \
--follow-import-to=match.matcher
更多推荐

所有评论(0)