首页 > 编程语言 >python 编译成.pyd/.so

python 编译成.pyd/.so

时间:2023-04-26 11:46:15浏览次数:44  
标签:python 编译成 py 编译 so test import pyd

所谓pyd文件,就是D语言(C/C++综合进化版本)编写的一种dll 文件,相比起容易被反编译的pyc文件,pyd文件目前还没有办法进行反编译,只能被反汇编,因此有很高的安全性,并且运行效率也比较高。

在windows会编译出pyd,linux会编译称.so


编译前准备

要想编译pyd,首先要通过pip安装Cython和setuptools库。

pip install cython
pip install setuptools

除了Cython和setuptools这两个python库以外,在windows上编译pyd,还需要安装Microsoft Visual C++ 14.0

pyd的编译

准备好编译环境后就可以进行编译了,首先创建一个用于编译的py脚本例如setup.py,内容如下

import os

import setuptools
from distutils.core import setup
from Cython.Build import cythonize
from distutils.extension import Extension

extensions = []
if os.path.exists('./test.py'):
    extensions.append(Extension('test', ['test.py']))

setup(ext_modules=cythonize(extensions, compiler_directives={'language_level': 3}), )

其中的test.py就是要编译的python脚本,而language_level参数为2代表python版本为2.X,如果要打包python3.X版本时,这个参数应该为3。

test.py文件内容
image

最后再用python运行这个setup.py并加上两个参数,即可开始编译pyd。
python setup.py build_ext --inplace

image

image

image

对于python2.X版本,编译好的pyd文件名称和py文件相同,例如test.py编译完后为test.pyd;而对于python3.X版本,编译好的pyd文件会带有后缀,例如test.py用64位windows系统上的python3.7编译后是test.cp37-win_amd64.pyd,这个pyd名称不要修改,python在import库时会自动识别。

引用使用

删掉test.py文件,然后引用
image
执行结果
image

标签:python,编译成,py,编译,so,test,import,pyd
From: https://www.cnblogs.com/yimeimanong/p/17355154.html

相关文章

  • Python-2闭包
    1.闭包:闭包是在嵌套函数中,内函数使用外函数的局部变量,并且返回了内函数。2.特点:延长了局部变量的生命周期,持续到脚本执行结束。3.意义:保护了内部变量,防止像使用全局变量(global)的时候被篡改。nonlocal:是一个关键字用于访问封闭函数作用域中的变量。当内层函数在外层函数中被定......
  • Python通过GPIO从DHT11温度传感器获取数据
    Python通过GPIO从DHT11温度传感器获取数据设备:树莓派4B、DHT11、杜邦线DHT11DHT11是一款有已校准数字信号输出的温湿度传感器。其精度湿度±5%RH,温度±2℃,量程湿度20-90%RH,温度0~50℃。精度不高,但价格低廉。DHT11使用单总线通信。供电电压3.3~5V。线路连接DHT11 树莓......
  • python subprocess Popen非阻塞,读取adb日志
    简单版fromthreadingimportThreadfromqueueimportQueue,Emptyimportshlexif__name__=='__main__':print_hi('PyCharm')#Car().run()defenqueue_output(stdout,queue):withopen("www.log",'w......
  • python安装过程中的问题
    1.用pip安装插件时报Fatalerrorinlauncher:Unabletocreateprocessusing'"D:\ProgramFiles\Python311\python.exe""D:\ProgramFiles\Python311\Scripts\pip.exe"installpyinstaller':???????????解决:1.检查Python安装的路径是否正确。在这种......
  • 一篇文章教会你什么是Python模仿强类型
    今日鸡汤此曲只应天上有,人间难得几回闻。前言   Hi,各位小伙伴,你们好,今天我们来说一个Python未来趋势的并且一个好玩的东西。    我们可能多多少少都听过一句话,动态一时爽,重构火葬场。从生产角度出发,Python确实是一门很优秀的语言,但是当多人协作时,或者接手别人Python代码时,......
  • 力扣 819. 最常见的单词--python
    给定一个段落(paragraph)和一个禁用单词列表(banned)。返回出现次数最多,同时不在禁用列表中的单词。题目保证至少有一个词不在禁用列表中,而且答案唯一。禁用列表中的单词用小写字母表示,不含标点符号。段落中的单词不区分大小写。答案都是小写字母。 示例:输入:paragraph......
  • python 使用selenium 不开启浏览器
    selenium不启动浏览器模式打开浏览器再启动会浪费时间,对爬虫的性能也是个影响,还有一种就是不打开浏览器。如下参数是针对chrome的全局参数,不能自定义参数。fromseleniumimportwebdriver#还有一些其他的参数'''#添加UAoptions.add_argument('user-agent="MQQBrowser/26......
  • Python的socket编程
    目前处在学习python爬虫的阶段,昨天看到了python的socket模块,分别实现TCP、UDP时间戳回显。1、tcp通信server和client代码#tcpServer.py#!/usr/bin/python#-*-coding:utf-8-*-fromsocketimport*fromtimeimportctimeHOST=''PORT=21156BUFSIZE=1024ADD......
  • python open 用法
    函数语法open(file,mode,buffering,encoding,errors,newline,closefd,opener)参数说明:name:一个包含了你要访问的文件名称的字符串值。mode:mode决定了打开文件的模式:只读,写入,追加等。所有可取值见如下的完全列表。这个参数是非强制的,默认文件访问模式为只读......
  • vue3 uniapp Uncaught (in promise) TypeError: Cannot read properties of null (rea
    引发这个问题是在三级页面中使用uni.navigateBack({delta:2})返回到一级页面再重一级页面进入二级页面二级页面中引用的组件引发的emitsOptions报错//原因:我在二级页面中的组件使用ts的emit写法引发的报错constemit=defineEmits<{(e:'confirm',contents:string):......