MinGW编译Python至pyd踩坑整理

发布时间 2023-12-12 16:08:01作者: 韩大狗

注意需要魔法

用scoop自动安装配置MinGw

需要魔法,不需要手动配置mingw

scoop install mingw

安装Cython,Setuptools第三方库

关闭魔法,使用清华源

pip install setuptools -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install cython -i https://pypi.tuna.tsinghua.edu.cn/simple

编写setup.py配置编译内容

from setuptools import setup
from Cython.Build import cythonize
from setuptools.extension import Extension

# 定义多个扩展模块
extensions = [
    Extension(name="main_screen_ini_gbk", sources=["main_screen_ini_gbk.py"]),
    Extension(name="tcpserver_ini_gbk", sources=["tcpserver_ini_gbk.py"]),
    # Extension(name="mylib1", sources=["mylib1.py"]),
    # 可以继续添加更多的模块
]

setup(
    ext_modules=cythonize(extensions, language_level=3)
)
# python setup.py build_ext --inplace  --compiler=mingw32

执行以下命令编译成pyd文件

# python setup.py build_ext --inplace  --compiler=mingw32

使用引入pyd文件

编译完成的pyd文件名称为脚本名.cp38-win_amd64.pyd,不要修改生成的pyd文件名,引入时只引入脚本名部分即可,与直接引入.py脚本时一致。
.pyd只能作为外部文件被引入,不能直接运行,需要另写一个.py脚本作为入口使用。

#引入pyd包
import main_screen_ini_gbk 
#使用pyd中封装好的方法
main_screen_ini_gbk.push2NextHome(tsclibrary)