Python编译pyd后去掉py版本信息
# 将该脚本和pyd放同一目录 import os #导入模块 filename = os.getcwd() #文件地址 list_path = os.listdir(filename) #读取文件夹里面的名字 for index in list_path: #list_path返回的是一个列表 通过for循环遍历提取元素 if index.endswith('pyd'): name = index.split('.')[0] #split字符串分割的方法 , 分割之后是返回的列表 索引取第一个元素[0] kid = index.split('.')[-1] #[-1] 取最后一个 path = filename + '\\' + index new_path = filename + '\\' + name+'.'+ kid os.rename(path, new_path) #重新命名 print('修改完成')
编译命令:python setup.py build_ext --inplace
setup 和py文件放同一目录
#cython: language_level=3 from distutils.core import setup from Cython.Build import cythonize author = "贝奇" version="1.0" setup( name='aStart', # 调用pyd的文件名 version=version, # pyd文件的版本,自由设置 author=author, # 作者名字 ext_modules=cythonize('aStart.py') ) setup( name='battleOOPallMap', # 调用pyd的文件名 version=version, # pyd文件的版本,自由设置 author=author, # 作者名字 ext_modules=cythonize('battleOOPallMap.py') ) setup( name='configOOP', # 调用pyd的文件名 version=version, # pyd文件的版本,自由设置 author=author, # 作者名字 ext_modules=cythonize('configOOP.py') ) setup( name='direction_move', # 调用pyd的文件名 version=version, # pyd文件的版本,自由设置 author=author, # 作者名字 ext_modules=cythonize('direction_move.py') ) setup( name='findPicColor', # 调用pyd的文件名 version=version, # pyd文件的版本,自由设置 author=author, # 作者名字 ext_modules=cythonize('findPicColor.py') ) setup( name='imgColorOOP', # 调用pyd的文件名 version=version, # pyd文件的版本,自由设置 author=author, # 作者名字 ext_modules=cythonize('imgColorOOP.py') ) setup( name='mainOOP', # 调用pyd的文件名 version=version, # pyd文件的版本,自由设置 author=author, # 作者名字 ext_modules=cythonize('mainOOP.py') ) setup( name='MapArr', # 调用pyd的文件名 version=version, # pyd文件的版本,自由设置 author=author, # 作者名字 ext_modules=cythonize('MapArr.py') ) setup( name='mouse', # 调用pyd的文件名 version=version, # pyd文件的版本,自由设置 author=author, # 作者名字 ext_modules=cythonize('mouse.py') ) setup( name='RkSDK', # 调用pyd的文件名 version=version, # pyd文件的版本,自由设置 author=author, # 作者名字 ext_modules=cythonize('RkSDK.py') ) setup( name='skill_recognize', # 调用pyd的文件名 version=version, # pyd文件的版本,自由设置 author=author, # 作者名字 ext_modules=cythonize('skill_recognize.py') ) setup( name='skill_release', # 调用pyd的文件名 version=version, # pyd文件的版本,自由设置 author=author, # 作者名字 ext_modules=cythonize('skill_release.py') ) setup( name='utils', # 调用pyd的文件名 version=version, # pyd文件的版本,自由设置 author=author, # 作者名字 ext_modules=cythonize('utils.py') ) setup( name='virtual_keysOOP', # 调用pyd的文件名 version=version, # pyd文件的版本,自由设置 author=author, # 作者名字 ext_modules=cythonize('virtual_keysOOP.py') ) setup( name='yolo', # 调用pyd的文件名 version=version, # pyd文件的版本,自由设置 author=author, # 作者名字 ext_modules=cythonize('yolo.py') )
出错问题解决:
当使用 cython 从 helloworld.pyx 创建 helloworld.c 时,出现此错误:
error compiling Cython file:
------------------------------------------------------------
...
print('hello world',end='')
^
------------------------------------------------------------
p21.pyx:1:23: Expected ')', found '='
我创建 helloworld.c 的命令是:
cython3 --embed p21.pyx
最佳答案
Cython 默认使用 Python 2 语义。将语言级别设置为 3,可以通过以下注释来完成:
在要转换的文件头部加上以下注释
#cython: language_level=3
人生苦短,慢慢潇洒。
nsyw.run