.py转化为.so文件

23 篇文章 1 订阅
# -*- coding: utf-8 -*-

import os
import shutil
from distutils.core import setup
from Cython.Build import cythonize
from librosa.util import files
import time

here = os.path.dirname(os.path.abspath(__file__))

time1 = time.time()

tmp_file = os.path.join(here, 'tmp', 'xxx')
build_dir = "build"
build_tmp_dir = os.path.join(build_dir, "temp")
build_dir_tacotron = os.path.join(here,'build', 'xxx')

os.makedirs(build_dir, exist_ok=True)
os.makedirs(build_tmp_dir, exist_ok=True)

def get_py(path, list1):
    fileList = os.listdir(path)  # 获取path目录下所有文件
    for filename in fileList:
        pathTmp = os.path.join(path,filename) # 获取path与filename组合后的路径
        if os.path.isdir(pathTmp):  # 如果是目录
            get_py(pathTmp,list1) # 则递归查找
        elif filename[-3:].upper() == '.PY':# 如果不是目录,则比较后缀名
            list1.append(pathTmp)


py_files = []
get_py(tmp_file, py_files)

print('py_files: ', py_files)


for file in py_files:
    print('file: ', file)
    setup(ext_modules=cythonize(file, language_level="3"), script_args=["build_ext", "-b", build_dir, "-t", build_tmp_dir])


shutil.copyfile(os.path.join(here, 'tmp', 'run.sh'), os.path.join(here, 'build', 'run.sh'))
shutil.copytree(os.path.join(tmp_file, 'xxx'), os.path.join(build_dir_tacotron, 'xxx'))


print('====so编译完成,耗时{}s!!!===='.format((time.time() - time1) / 1000.0))

需要注意几点:
1、包需要包含 init.py文件
2、非py文件,需要手动复制,或者添加代码

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值