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')
)
setuo.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
posted @ 2023-05-24 14:20  zwnsyw  阅读(109)  评论(0编辑  收藏  举报