当前位置: 代码网 > it编程>前端脚本>Python > Python打包生成.pyc和.pyd文件方式

Python打包生成.pyc和.pyd文件方式

2026年01月21日 Python 我要评论
pyd文件是什么?pyd文件类似于dll, 一般用c/c++语言编译而成, 可用作模块导入python程序中。pyd文件仅适用于特定版本的python,不同版本间互不兼容, 如python3.8不支持

pyd文件是什么?

pyd文件类似于dll, 一般用c/c++语言编译而成, 可用作模块导入python程序中。

pyd文件仅适用于特定版本的python, 不同版本间互不兼容, 如python3.8不支持3.7版本的文件。

pyd文件用c/c++语言编译而成, 难以被反编译, 在保护python程序源码上有很好的效果。

而且由于使用了c/c++等低级语言, 代码执行效率较高。

1.环境

①pip3 install cython

②安装visual studio c编译器

启动visualstudiosetup.exe, 必须选择c++开发, 可选python开发, 点击安装。

2.待编译文件hello.py以及setup.py文件

hello.py文件内容如下

def greet(str):
    return "hello " + str

setup.py文件内容如下

from distutils.core import setup
from cython.build import cythonize
from distutils.extension import extension

def main():
# 这里为文件名 可以增加多个extension(' ', [' '])
  extensions = [extension('hello', ['hello.py'])]  # 待编译文件名
  setup(ext_modules=cythonize(extensions))
if __name__ == '__main__':
  main()

执行打包命令

cmd进入hello.py的文件目录下,执行python setup.py build_ext

执行成功之后,同目录会生成一个hello.c的文件和build的文件夹,在build文件夹目录里面存放着编译好的.pyd文件

3.运行调试

from hello import greet
print(greet("tom"))

现在运行打印出hello tom还并未成功,此时仍是调用的hello.py文件。

(调用.pyc、.pyd文件的方式仍是通过import导入)

删除hello.py文件,只保留hello.pyc在该目录,运行成功,则说明pyc文件成功

删除hello.pyc文件,从build目录下拷贝出.pyd并改名为hello.pyd文件,运行成功,则说明pyd文件成功

4.写在最后

①若没有visual studio c,则只生成.pyc文件;有,则可生成.pyd文件

②编译文件hello.py以及setup.py文件的文件名都需要和后续对应上的。待编译文件名是什么,则setup代码里文件名是什么;setup文件名和打包命令文件名是一致的。

③当删除hello.py文件时,导入会显示红色下划线,如果同目录下有hello.pyc或hello.pyd文件,则运行不会报导入失败错误

以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2026  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com