亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > Python > 正文

Python 項目轉化為so文件實例

2024-09-09 19:03:26
字體:
來源:轉載
供稿:網友

思路是先將py轉換為c代碼,然后編譯c為so文件,所以要安裝以下內容:

python 安裝:cython

pip install cython

linux 安裝:python-devel,gcc

yum install python-develyum install gcc

初步編譯

新建Test.py文件,內容如下

class test:    def __init__(self):    print('init')  def say(self):    print ('hello')

新建setup.py,內容如下

from distutils.core import setupfrom Cython.Build import cythonizesetup(ext_modules = cythonize(["Test.py"]))

在bash中執行

python setup.py build_ext

運行后會生成build文件夾,如下

現在so文件就可以像普通py文件一樣導入了

集成編譯

做了以下內容:

1.文件夾編譯

2.刪除編譯出的.c文件

3.刪除編譯的temp文件夾

將需要編譯的目錄和setup.py放在同一層級,執行python setup.py,so文件在build目錄下

setup.py代碼如下:

'''Created on 2019年3月27日@author: hylink'''#-* -coding: UTF-8 -* -"""執行前提:  系統安裝python-devel 和 gcc  Python安裝cython編譯整個當前目錄:  python py-setup.py編譯某個文件夾:  python py-setup.py BigoModel生成結果:  目錄 build 下生成完成后:  啟動文件還需要py/pyc擔當,須將啟動的py/pyc拷貝到編譯目錄并刪除so文件"""import sys, os, shutil, timefrom distutils.core import setupfrom Cython.Build import cythonizestarttime = time.time()currdir = os.path.abspath('.')parentpath = sys.argv[1] if len(sys.argv)>1 else ""setupfile= os.path.join(os.path.abspath('.'), __file__)build_dir = "build"build_tmp_dir = build_dir + "/temp"def getpy(basepath=os.path.abspath('.'), parentpath='', name='', excepts=(), copyOther=False,delC=False):  """  獲取py文件的路徑  :param basepath: 根路徑  :param parentpath: 父路徑  :param name: 文件/夾  :param excepts: 排除文件  :param copy: 是否copy其他文件  :return: py文件的迭代器  """  fullpath = os.path.join(basepath, parentpath, name)  for fname in os.listdir(fullpath):    ffile = os.path.join(fullpath, fname)    #print basepath, parentpath, name,file    if os.path.isdir(ffile) and fname != build_dir and not fname.startswith('.'):      for f in getpy(basepath, os.path.join(parentpath, name), fname, excepts, copyOther, delC):        yield f    elif os.path.isfile(ffile):      ext = os.path.splitext(fname)[1]      if ext == ".c":        if delC and os.stat(ffile).st_mtime > starttime:          os.remove(ffile)      elif ffile not in excepts and os.path.splitext(fname)[1] not in('.pyc', '.pyx'):        if os.path.splitext(fname)[1] in('.py', '.pyx') and not fname.startswith('__'):          yield os.path.join(parentpath, name, fname)        elif copyOther:            dstdir = os.path.join(basepath, build_dir, parentpath, name)            if not os.path.isdir(dstdir): os.makedirs(dstdir)            shutil.copyfile(ffile, os.path.join(dstdir, fname))    else:      pass#獲取py列表module_list = list(getpy(basepath=currdir,parentpath=parentpath, excepts=(setupfile)))try:  setup(ext_modules = cythonize(module_list),script_args=["build_ext", "-b", build_dir, "-t", build_tmp_dir])except Exception as e:  print (e)else:  module_list = list(getpy(basepath=currdir, parentpath=parentpath, excepts=(setupfile), copyOther=True))module_list = list(getpy(basepath=currdir, parentpath=parentpath, excepts=(setupfile), delC=True))if os.path.exists(build_tmp_dir): shutil.rmtree(build_tmp_dir)print ("complate! time:", time.time()-starttime, 's')
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美日韩中文在线| 成人日韩av在线| 久久免费视频观看| 91夜夜未满十八勿入爽爽影院| 激情懂色av一区av二区av| 久久香蕉国产线看观看网| 中文国产亚洲喷潮| 亚洲国产99精品国自产| 欧美激情一区二区三区成人| 亚洲美女喷白浆| 国产精品99一区| 91成人在线视频| 亚洲乱码国产乱码精品精天堂| 影音先锋欧美在线资源| 美女性感视频久久久| 国产国语刺激对白av不卡| 亚洲天堂成人在线| 久久伊人免费视频| 国产成人av在线| 欧美成人精品在线观看| 青青草精品毛片| 国产精品久久久久久网站| 亚洲欧洲在线视频| 精品偷拍一区二区三区在线看| 国产偷亚洲偷欧美偷精品| 精品中文视频在线| 国产精品久久久久久五月尺| 久久男人的天堂| 亚洲精品日韩欧美| 国产综合福利在线| 色偷偷av亚洲男人的天堂| 亚洲free性xxxx护士白浆| 欧美极品在线播放| 亚洲人精选亚洲人成在线| 一区二区三区回区在观看免费视频| 国产精品入口日韩视频大尺度| 91黑丝在线观看| 国产成人jvid在线播放| 国产精品羞羞答答| 亚洲欧美制服中文字幕| 欧日韩不卡在线视频| www亚洲精品| 日韩免费精品视频| 精品偷拍一区二区三区在线看| 亚洲人成毛片在线播放| 日韩电影免费观看中文字幕| 免费99精品国产自在在线| 欧美三级免费观看| 日韩欧美在线视频日韩欧美在线视频| 亚洲激情小视频| 成人激情春色网| 日韩精品在线电影| 国产成人精品a视频一区www| 午夜精品国产精品大乳美女| 亚洲欧美精品一区二区| 色99之美女主播在线视频| 欧美日韩一区二区三区在线免费观看| 成人久久久久久| 久久久精品久久| 日韩少妇与小伙激情| 疯狂做受xxxx欧美肥白少妇| 自拍亚洲一区欧美另类| 亚洲专区中文字幕| 国产精品一区二区av影院萌芽| 亚洲欧美国产一本综合首页| 中文字幕久热精品视频在线| 黑人精品xxx一区一二区| 日韩av影院在线观看| 亚洲第一视频网站| 欧美日韩中文字幕在线视频| 久久久久久久久久久久av| 亚洲va男人天堂| 日韩欧美中文免费| 欧美精品福利在线| xxx一区二区| 亚洲精品国产综合久久| 国产精品视频在线观看| 97在线视频免费播放| 欧美性猛交丰臀xxxxx网站| 久久精品视频在线| 38少妇精品导航| 国产性猛交xxxx免费看久久| 国产最新精品视频| 国产一区视频在线| 亚洲а∨天堂久久精品9966| 日韩女优人人人人射在线视频| 5566日本婷婷色中文字幕97| 国产精品爽爽ⅴa在线观看| 久久av在线播放| 国产成人免费91av在线| 色偷偷综合社区| 一区二区三区四区视频| 日本亚洲欧美三级| 亚洲视频欧美视频| 国产精品日韩欧美综合| 欧美日韩一区二区三区在线免费观看| 国产精品电影久久久久电影网| 欧美高清激情视频| 欧美综合在线观看| 精品视频在线播放色网色视频| 日韩在线观看成人| 欧美天天综合色影久久精品| 久久久久久久久久av| 亚洲精品国产综合区久久久久久久| 最近2019中文字幕第三页视频| 国产一区二中文字幕在线看| 国产精品第1页| 国产午夜精品理论片a级探花| 美乳少妇欧美精品| 欧美日韩国产999| 久久久久久久久中文字幕| 一区二区国产精品视频| 97国产精品久久| 亚洲色图色老头| 国产成人精品综合久久久| 久久久久久尹人网香蕉| 欧美高清激情视频| 中文字幕在线精品| 8x海外华人永久免费日韩内陆视频| 亚洲一区二区三区四区在线播放| 一区二区三区黄色| 久久精品一偷一偷国产| 亚洲精品成人久久久| 自拍偷拍亚洲精品| 国产精品电影久久久久电影网| 久久久噜噜噜久久| 在线观看欧美成人| 国产日韩视频在线观看| 日韩中文综合网| 亚洲成人精品久久久| 美女性感视频久久久| 国产精品久久久久久av福利软件| 正在播放亚洲1区| 精品国产户外野外| 97国产在线观看| 色与欲影视天天看综合网| 日韩av中文字幕在线播放| 91色p视频在线| 91禁国产网站| 欧美性xxxx极品hd欧美风情| 国产视频精品免费播放| 久久精品一偷一偷国产| 欧美成人午夜影院| 亚洲国产精品热久久| 色噜噜国产精品视频一区二区| 伊人伊成久久人综合网站| 国产精品福利久久久| 久久香蕉国产线看观看网| 欧美巨猛xxxx猛交黑人97人| 亚洲精品自拍第一页| 日本久久久久久| 97视频在线免费观看| 国产成人福利视频| 欧美一级黄色网| 亚洲理论在线a中文字幕| 日本一区二区三区在线播放| 亚洲成人激情在线| 日韩成人激情视频| 欧美成人免费大片| 亚洲小视频在线| 国产在线视频欧美| 欧美日韩色婷婷| 日韩视频免费看| 亚洲午夜未删减在线观看|