当前位置: 首页 > news >正文

【python】如何将python程序封装为cpython的库

python程序在发布时,往往会打包为cpython的库,并且根据应用服务器的不同架构(x86/aarch64),以及python的不同版本,封装的输出类型也是非常多。本文介绍不同架构指定python下的代码打包方式:

首先,了解应用服务器的结构,linux在终端输入

uname -m

在这里插入图片描述
确定是x86还是aarch64

以编译目标为aarch64+python3.8为例

from Cython.Build import cythonize
from Cython.Distutils import build_ext
from distutils.core import setupclass BuildExtWithNewSuffix(build_ext):def get_ext_filename(self, ext_name):filename = super().get_ext_filename(ext_name)return filename.replace(self.oldSuffix, self.newSuffix)def main(compileType, deviceType):if compileType == 'aarch64':BuildExtWithNewSuffix.newSuffix = 'cpython-38-aarch64-linux-gnu'# os.environ['CC'] = '/opt/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-gcc'# os.environ['LDSHARED'] = '/opt/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-gcc -shared'print("aarch64 compile ")setup(ext_modules=cythonize(module_list, nthreads=20,compiler_directives={'language_level': "3"}, build_dir=build_code),script_args=["build_ext", "-j10", "-b", build_target, "-t", build_tmp_dir],include_dirs=['/opt/cross_compile/rk/include/python3.8'],cmdclass={'build_ext': BuildExtWithNewSuffix})if __name__ == "__main__":compileType = 'aarch64'if (len(sys.argv) > 1):compileType = sys.argv[1]deviceType = 'atlas'if (len(sys.argv) > 2):deviceType = sys.argv[2]sys.exit(main(compileType, deviceType))
http://www.xdnf.cn/news/150553.html

相关文章:

  • PowerShell脚本实现|从文件夹动画序列中均匀选取关键帧(保留首尾帧)
  • 【Java开发规范及漏洞扫描】
  • 对比2款国产远控软件,贝锐向日葵更优
  • 嵌入式:Linux系统应用程序(APP)启动参数及其规则详解
  • 感知古今:探秘古代传感器的奇妙世界
  • STUN协议 与 TURN协议
  • 如何在SOLIDWORKS中高效管理文件属性?
  • 基于ssm的同城上门维修平台管理系统(源码+数据库)
  • 基于STM32、HAL库的ADS1220IPWR模数转换器ADC驱动程序设计
  • 什么是优质的静态IP?以及如何选择优质的静态IP?
  • redis 数据类型新手练习系列——Hash类型
  • script中async与defer区别
  • Java基本概念
  • C语言标准库函数setlocale用法详解
  • Prometheus中部署Alertmanager
  • 全面解析 Spring 依赖注入:@Autowired、@Inject 与 @Resource 深度剖析
  • CRI、CSI 和 CNI 是三大核心接口标准
  • 多层pcb工厂哪家好?
  • Java 后端开发环境安装
  • 【EDA】Placement(布局)
  • 安全性测试常规测试点全解析:从基础到高级的实战指南
  • AI智能SEO关键词优化策略
  • 人工智能(AI)对网络管理的影响
  • 13.ArkUI Navigation的介绍和使用
  • 队列基础和例题
  • Linux-05 半个月崩了三次 ubuntu 系统记录
  • Linux网络编程
  • 2025智能营销平台发展趋势
  • 消息唯一ID算法参考
  • DbCreateHelper数据库创建指南