需要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)pyd是Python的扩展模块,相当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等工具,然后使用相应的命令即可实现。