python代码编译成pyd_将py文件编译成pyd(setup模块)

一、将单个py文件打包成pyd

1、环境

win10、python3.7.4

2、安装cython模块

pip install cython

3、编写setup.py文件

如:

speckHello.py

def aa():

print('hello world')1

2

hello.py

import sys, os

sys.path.append(os.path.dirname(os.path.abspath(os.path.dirname(__file__))))

from qfs import speakHello

speakHello.aa()1

2

3

4

setup.py

from distutils.core import setup

from Cython.Build import cythonize

setup(ext_modules=cythonize("speakHello.py"))1

2

3

4

4、执行 python setup.py build_ext 命令

会在当前目录下的 ./build/lib.win-amd64-3.7 目录下生成pyd文件: speakHello.cp37-win_amd64.pyd

可以添加 --inplace参数, 直接在当前目录下生成与py文件同名的pyd文件:printHello.cp37-win_amd64.pyd

python setup.py build_ext --inplace1

2

5、使用pyd文件

将文件名修改为 speakHello.pyd , 然后将文件放到当前目录, 删除 speakHello.py

执行: python3 hello.py

输出:hello world

1、pyd文件可以向py文件一样正常导入使用, 在win10上编译后, 在win7同样可以运行。

2、pyd文件无法直接运行, 需要通过导入来运行。对于一个项目来说,可以将pyd导入到项目启动文件中运行, 然后将项目启动文件打包成exe或其他格式的可执行文件。

3、同名的py和pyd并存时, pyd文件会优先被调用。1

2

3

二、报错及解决

1、“Unable to find vcvarsall.bat”

解决:安装VS

VS下载:https://visualstudio.microsoft.com/zh-hans/vs/older-downloads/?rr=https%3A%2F%2Fdocs.microsoft.com%2Fen-us%2Fcpp%2Fbuild%2Fvscpp-step-0-installation%3Fview%3Dvs-2015

下载 community 版本, 安装时选择安装python开发, 安装完成后重启。

786861455874bb7166500f8c12b4d7a9.png

参考

https://devblogs.microsoft.com/python/unable-to-find-vcvarsall-bat/#comments

https://blog.baosiqiang.cn/archives/75cf9cb3.html

练习:

单个py文件编译为pyd文件:https://download.csdn.net/download/YPFeime/12186951


版权声明:本文为weixin_34847198原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。