python打包⽣成so⽂件的实现1.安装⼯具
python3 安装:cython
pip3 install cython -i mirrors.aliyun/pypi/simple/
pip国内的⼀些镜像
linux 安装:python-devel,gcc
查看gcc版本信息,有的话就不⽤安装了
gcc --version
没有⾃⾏安装对应服务器版本环境的gcc编译安装python-devel
pip3 install python-devel -i mirrors.aliyun/pypi/simple/
2. Linux下的.so⽂件(测试⽤例)
创建⼀个测试⽂件夹
mkdir so_test
so_test⽂件夹下创建要封装的⽂件test.py
import datetime
class DataCenter():
def gettime(self):
print(w())
def write_data(self):
print("hello XiaoBoData!")
so_test⽂件夹下创建调⽤⽂件 so_test.py
from test import DataCenter
data = DataCenter()
data.write_data()
⾸先运⾏so_test保证代码可以运⾏成功,之后在做so封装
so_test⽂件夹下创建打包⽂件 setup.py
from test import DataCenter
data = DataCenter()
data.write_data()
最终⽂件夹下如下:
执⾏python3 setup.py build_ext
根据⽂件⼤⼩,编译时间不同
执⾏成功之后,同⽬录会⽣成⼀个test.c的⽂件和build的⽂件夹,⽣成的so⽂件就在build/lib.linux-aarch64-3.5/⽬录下,服务器的环境不同⽣成的so⽂件名也不同,⽣成位置都是相同的
把⽣成的so⽂件拷贝到test.py⽂件存放位置即可,然后删除test.py,test.c和build⽂件夹,执⾏python3 s
o_test试试能不能成功
测试证明没有问题,加密之后的so⽂件 == py⽂件,只不过从明⽂变成了密⽂,后缀名从py变成so,其他的都没有变,达到了代码的安全性
3. Windows下将Python封装成pyd⽂件(dll)
pyd就是dll
mytest.py 和dll_test.py和上⾯⼀样
创建setupDll.py
# !/usr/bin/env python
# -*- coding: utf-8 -*-
import setup
from Cython.Build import cythonize
sion import Extension
def main():
# 这⾥为⽂件名可以增加多个Extension(' ', [' '])
extensions = [Extension('mytest', ['mytest.py'])]
setup(ext_modules=cythonize(extensions))
if __name__ == '__main__':
main()
在pycharm的terminal下输⼊Python setupDll build_ext,得到pyd⽂件
在build⽂件夹下得到.pyd⽂件调⽤⽅式不变pycharm安装教程linux
# !/usr/bin/env python
# -*- coding: utf-8 -*-
#如果不想改变pyd路径,则需要在dll_test.py中加⼊:
import sys
sys.path.append('./build/lib.win-amd64-3.7/')
from mytest import DataCenter
def main():
data = DataCenter()
data.write_data()
if __name__ == '__main__':
main()
运⾏得到结果
到此这篇关于python打包⽣成so⽂件的实现的⽂章就介绍到这了,更多相关python打包⽣成so⽂件内容请搜索以前的⽂章或继续浏览下⾯的相关⽂章希望⼤家以后多多⽀持!
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论