需要Cython库支持,windows上编译需要vs编译器支持。windows上编译结果为.pyd文件,linux上编译结果为.so。

1、安装Cython库

pip install cython

2、创建工程并生成.pyd文件

新建一个test.py文件,内容如下:

#!/usr/bin/env python3
# coding: utf-8
def hello():
    print("Hello world")

创建setup.py文件,实现编译逻辑:

from setuptools import setup
from Cython.Build import cythonize
setup(
  name = 'Hello world app',
  ext_modules=cythonize("test.py")

        接着,再打开cmd,在该目录并执行如下命令:

python setup.py build_ext --inplace

        最终成成.pyd文件。

目录结构:

setup.py
test.py
build/... # 生成目录
test.cp37-win_amd64.pyd # 生成文件

3、.pyd文件引用测试

        新建工程,创建测试文件main.py,将 test.cp37-win_amd64.pyd 拷贝入工程目录,main.py测试代码为:

import test 
if __name__ == '__main__': 
    test.hello()

        运行结果:

Hello world

4、自定义包封装

        待定,实际测试一直遇到包引用语法不兼容问题。这里贴出测试代码:

from Cython.Build import cythonize
from setuptools import Extension, setup
setup(
    name='Hello world app',
    ext_modules=cythonize([
        # 或者:Extension("test", ["test/__init__.py", "test/a.py", "test/b.py"]),
        Extension("test", ["test/a.py", "test/b.py"])

有解决问题的同学,可以分享下哈。

参考文章:

1、Python Cython.Build 模块,cythonize() 实例源码

Python Cython.Build 模块,cythonize() 实例源码 - 编程字典

2、Cython的用法以及填坑姿势

Cython的用法以及填坑姿势_feijiges的博客-CSDN博客_cython 编译

3、Python的py文件生成pyd文件步

Python生成pyd文件 - GavinSimons - 博客园

4、python代码加密(pyarmor)

使用 PyArmor — PyArmor 7.2.0 文档

需要Cython库支持,windows上编译需要vs编译器支持。windows上编译结果为.pyd文件,linux上编译结果为.so。1、安装Cython库pipinstallcython2、创建工程并生成.pyd文件新建一个test.py文件,内容如下:#!/usr/bin/env python3# coding: utf-8def hello(): print("Hello world")创建setup.py...
python代码换为c代码,然后编译c为so文件 Cython不仅是python使用广泛和高效的解释器,也是python代码的加密工具。 Cython加密源码的过程: 1、将多个.py编译为.c文件 2、将.c文件编译为.so或者.pyd 3、同级目录下生成一个build文件夹目录 4、build文件夹目录中编译好的.so文件重命名 5、将配置文件及主函数同步移动到build文件夹 Project - src_pro/*.py - src_pro/config.py - src_pro/*.py - services.py 3.1.说明: 1)pydPython的扩展模块,相当windows.dll,不同的是pyd只供python调用而已 2)大部分、模块都以pyd形式发布让代码更安全 3)安装Cython:pip install cython 4)安装vs2017处理vcvarsall.bat C:\Program Files (x86)\Microsoft Visual ...
img = cv2.imread(img_path) # 取值范围:0~100,数值越小,压缩比越高,图片质量损失越严重 params = [cv2.IMWRITE_JPEG_QUALITY, ratio] # ratio:0~100 msg = cv2.imencode(".jpg", img, params)[1] 1、ASCII、Unicode、UTF-8 ASCII编码和Unicode编码的区别:ASCII编码是1个字节,扩展ASCII码是从128-255的字符。而Unicode只是一个符号集,通常是2个字节。 本着节约的精神,又出现了把Unicode编码化为“可变长编码”的UTF-8编码。UTF-8编码把一个Unicode字符根据不同的数字大小编码成1-6个字节,常用的英文字母被编码成1个字节,汉字通常是3个字节,只有很生僻的字符才会被编码成4
Python是一种简单易学的程序语言,它常用于许多领域,如科学计算、机器学习、Web开发等。在Python中,我们可以将代码存储为.py文件并在解释器中运行它们,但有时候我们想要将.py文件编译成二进制文件,以便于分发和执行。这时候我们可以使用PyInstaller来生成.pyd文件并打成.exe文件。 首先,我们需要安装PyInstaller,可以在终端中使用pip install pyinstaller命令进行安装。安装完成后,在命令行中切换到.py文件所在的目录,并输入以下命令: pyinstaller --onefile your_script_name.py 这个命令会在同一个目录下生成一个dist文件夹,其中含您的打程序。使用--onefile命令可以将整个程序打为一个单独的可执行文件,而不是分散在多个文件中。 另外,如果您要将Python代码编译为.pyd文件,则可以使用Cython或Nuitka等工具。这些工具可以将Python代码翻译成C代码,然后使用C编译器将其编译成.pyd文件。 总的来说,Python生成.pyd文件并打成.exe文件并不是很复杂,只需要安装PyInstaller和Cython等工具,然后使用相应的命令即可实现。