python 中 .py文件 转 .pyd文件的操作
pyd文件生成
安装easycython库
pipinstalleasycython
test.py
deftest(): print("调用成功")
main.py
importtest test.test()
test.py文件重命名为:test.pyx
终端运行命令
easycython*.pyx
重命名pyd文件,删除:cp36-win_amd64.
运行代码,调用成功:
pythonmain.py
代码实现
importglob importos defget_file_path(path,file_type): """ 取文件夹下相同后缀文件路径列表 :parampath:文件夹路径 :paramfile_type:后缀名 :return:文件路径列表 """ paths=glob.glob(os.path.join(path, file_type )) returnpaths defstr_replace(old_str,old,new): """ 在old_str字符串中,把old替换成new :paramold_str:原字符串 :paramold:被替换的字符 :paramnew:替换后的字符 :return:替换后的字符串 """ new_str=old_str.replace(old,new) #print("new_str:",new_str) returnnew_str defpy_to_pyd(path_dir,middle_name_pyd): """ .py文件转.pyd文件 :parampath_dir:.py文件所在的文件夹路径 :parammiddle_name_pyd:pyd的中间名,如:.cp36-win_amd64 :return: """ #.py文件转成.pyx文件 file_type='*.py' paths=get_file_path(path_dir,file_type) #print(paths) forpainpaths: new_str=str_replace(pa,'py','pyx') os.rename(pa,new_str) #main.pyx转成main.py old_name=path_dir+r'\main.pyx' new_name=path_dir+r'\main.py' os.rename(old_name,new_name) #把pyx转成pyd os.system("cd{}&&easycython*.pyx".format(path_dir)) #删除所有.html文件 file_type='*.html' paths=get_file_path(path_dir,file_type) #print(paths) forpainpaths: os.remove(pa) #删除所有.pyx文件 file_type='*.pyx' paths=get_file_path(path_dir,file_type) #print(paths) forpainpaths: os.remove(pa) #删除所有.c文件 file_type='*.c' paths=get_file_path(path_dir,file_type) #print(paths) forpainpaths: os.remove(pa) #删除名字中的.pyd文件中的cp36-win_amd64 file_type='*.pyd' paths=get_file_path(path_dir,file_type) #print(paths) forpainpaths: new_str=str_replace(pa,middle_name_pyd,'') os.rename(pa,new_str) if__name__=='__main__': path_dir=r"C:\Users\xiahuadong\Desktop\number_humen-副本" middle_name_pyd='.cp36-win_amd64' py_to_pyd(path_dir,middle_name_pyd)
补充:Python常见文件格式.py.pyc.pyw.pyo.pyd之间的主要区别
Python([ˈpaɪθən])是一种面向对象、解释型计算机程序设计语言。Python语法简洁、清晰,具有丰富和强大的类库。
Python源代码遵循GPL(GNUGeneralPublicLicense)协议,由GuidovanRossum于1989年底发明,第一个公开发行版发行于1991年。
Python常被称为胶水语言,能把用其他语言编写的各模块(尤其是C/C++)轻松地联结在一起。常见情形是,用Python快速生成程序原型(有时甚至是程序最终界面),然后对其中有特别要求的部分,用更合适的语言改写;譬如:3D游戏中的图形渲染模块,性能要求特别高,就可用C/C++重写,而后封装为Python可调用的扩展类库。需要注意的是,在您使用扩展类库时可能需要考虑平台问题,某些扩展类库可能不提供跨平台实现。
一般认为,Python是一种解释性语言,Python在执行时,会先将.py文件中的源代码编译成bytecode(字节码),然后再由PythonVirtualMachine来执行这些编译bytecode。
这种机制的基本思想跟Java、.NET一致;但PythonVirtualMachine与Java或.NET的VirtualMachine不同的是:Python的VirtualMachine是一种更高级的VirtualMachine。这里的高级并不是通常意义上的高级,不是说Python的VirtualMachine比Java或.NET的功能更强大,更拽,而是说和Java或.NET相比,Python的VirtualMachine距真实机器的距离更远。或者可以这么说,Python的VirtualMachine是一种抽象层次更高的VirtualMachine。
Python提供了一种中间编译结果保存机制,即bytecode,或更准确地说,保存PyCodeObject。事实上,Python确实提供了这样一种机制——.pyc文件。在执行一个.py文件的源代码之后,Python并不会自动生成与该.py文件对应的.pyc文件。Python会根据需要自动触发、创建.pyc文件,原理很简单,就是利用Python的import机制。
在Python运行过程中如碰到importabc这样的语句,Python将会在设定好的path中寻找abc.pyc或abc.dll文件。若没有这样的文件,而只是发现了abc.py文件,那么,Python会首先将abc.py编译成相应的PyCodeObject中间结果,然后再创建abc.pyc文件,并将中间结果写入该文件。接下来,Python才会对abc.pyc文件进行一个import动作,实际上也就是将abc.pyc文件中的PyCodeObject重新在内存中复制出来,加以运行。
由于Python.pyc文件的此种运行机制,所以,可随时删除所有中间过程.pyc文件,当Python再次运行时,还会重生成这些.pyc文件,对您所编辑程序的运行并无任何影响。当然,得有源代码才行。
视窗用python.exe运行.py,用pythonw.exe运行.pyw。因为安装视窗版Python时,扩展名.py自动被登记为用python.exe运行,而.pyw则被登记为用pythonw.exe运行。
.py文件
以.py作扩展名的文件是Python源代码文件,由python.exe解释,可在控制台下运行。当然,也可用文本编辑器进行修改。
.pyc文件以.pyc作扩展名的文件是python编译文件。.pyc文件是不能用文本编辑器进行编辑的,其优点是.pyc文件的执行速度要远快于.py文件。至于为什么要有.pyc文件,这个需求太明显了,因为.py文件是可直接看到源码的,若是软件开发商的话,不可能把源码泄漏出去?所以,就需编译成.pyc后再发布。
.pyw文件
.pyc文件执行时,桌面会出现类似CMD命令的黑色shell窗口,十分难看,于是.pyw文件就应运而生了。.pyw文件与.pyc文件的执行,本质上并没什么区别,只是.pyw文件执行的时候不会出现类似CMD命令的黑色shell窗口。
.pyw文件格式主要是设计用来运行纯GUI图形用户界面程序的。纯GUI图形用户界面程序的用户不需要看到类似CMD命令的黑色shell控制台窗口。.pyw文件运行时,所有stdout、stderr输出无效,所有原stdin的读取只会得到EOF。值得一提的是,开发纯GUI图形用户界面程序时,可暂时把.pyw改成.py,以便运行时调出控制台窗口,看到所有错误信息,方便修改、调试。
.pyo文件
.pyo文件是优化编译后的程序。“python-O源文件”即可将源程序编译为.pyo文件。同样,.pyo文件也是不能用文本编辑器进行编辑的。
.pyd文件
.pyd文件并不是用python编写成的,.pyd文件一般是其他语言编写的python扩展模块。.pyd文件是用D语言按照一定格式编写,并处理成二进制的文件。
那么什么是“D语言”呢?它是C/C++的综合进化版,不仅具有二者的全部优点,且整体性能更佳,但其抽象程度高。
D语言最初由DigitalMars公司就职的WalterBright于2001年发布,意图改进C++语言。目前最新D语言被简称为D2。最主要的D语言的实现是DMD。
D语言源自C/C++,借鉴了众多编程语言的特色和现代编译器技术,融会贯通了设计者丰富的实践经验,使之具备了非凡的威力──既有C/C++语言的强大威力,又有Python和Ruby的开发效率。它集众多系统级编程所需的功能于一身,例如垃圾回收、手工内存操作、契约式设计、高级模板技术、内嵌汇编、内置单元测试、Mixin风格多继承、类Java包管理机制、内置同步机制、内建基本运行时信息。
python要导入.pyd文件,实际上是在.pyd文件中封装了一个module,在python中使用时,把它当成module来用就可以了,即:import路径名.modulename即可,路径名为.pyd文件所在的路径。
以上为个人经验,希望能给大家一个参考,也希望大家多多支持毛票票。如有错误或未考虑完全的地方,望不吝赐教。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。