使用cython将py文件编译成so文件

一、环境准备
    安装cython,以及gcc编译环境
    wget https://bootstrap.pypa.io/get-pip.py
    python get-pip.py

pip install cython
    yum install -y gcc python-devel

二、编写测试脚本
   test.py,内容如下
   import os
   def test():
       print  os.path.realpath(‘.‘)
   
三、将其拷贝到python系统路径
    /usr/lib/python2.7/site-packages/test
    在test目录下创建__init__.py, 与 test.py 的文件
    test.py 上面内容如上所示

四、脚本测试
    python 
    >>> import lyh.test
    >>> lyh.test.test()

五、编译so文件
    以下操作均在 /usr/lib/python2.7/site-packages/test 路径下执行
    
    1. cython test.py
    2. gcc -c -fPIC -I/usr/include/python2.7/ test.c
    3. gcc -shared test.o -o test.so
    
六、验证so文件的可用性
    1. 移除/usr/lib/python2.7/site-packages/test/test.py 文件,只保留 test.so文件
        test
        ├── __init__.py
        └── test.so
    2. 
    python
    >>> import test.test
    >>> test.test.test()
    
    可以执行

验证完成

七、使用setup.py 编译so
    1. 编写setup.py文件,位于/usr/lib/python2.7/site-packages/test,内容如下:
    
    from distutils.core import setup
    from Cython.Build import cythonize
    setup(
        ext_modules = cythonize("test.py")
    )
    2.然后运行

setup.py build_ext --inplace

原文地址:https://www.cnblogs.com/wilson403/p/10854357.html

时间: 2024-10-01 21:35:36

使用cython将py文件编译成so文件的相关文章

在JAVA中将class文件编译成jar文件包,运行提示没有主清单属性

Maven 项目生成jar运行时提示“没有主清单属性” 新建了一个Maven的项目,mvn compile和mvn package后生成了jar文件,然后直接到target目录下去执行Java -jar xxx.jar命令运行jar包时出现了“xxx.jar没有主清单属性”的错误提示. 根据我的经验,肯定是没有找到入口类(即main函数所在的类),在pom.xml里面加上入口类的配置就好了!第一次直接用maven来打包jar,记录一下. 关于可执行程序(需要指定一个 main 类)打 jar 包

Linux内核驱动将多个C文件编译成一个ko文件的方法——每个C文件里都有module_init与module_exit

以两个C文件为例: 将本该被分别编译成adc_device.ko和adc_driver.ko的adc_device.c.adc_driver.c编译成一个ko文件! 采用方法: 第一步.修改C文件 1.去掉adc_device.c文件里module_init(xxx).module_exit(yyy)中xxx.yyy 函数原型的关键字static 2.注销adc_device.c文件里module_init(xxx).module_exit(yyy)函数 3.在adc_driver.c文件里添加

如何通过jad把class批量反编译成java文件

背景:前几天在项目开发的时候遇到一个问题,那就是利用myeclipse编写好的一个项目打包成jar包后上传部署到服务器里,之后本地的项目被自己改来改去出现了一些问题,想着把上传到服务器里面的war包下载下来重新利用,大家都知道,war包里面的内容解压下来后java文件已经被编译成class文件了,期初用的是一款名为"jd-gui"的工具来反编译,这个很方便,不过缺点是只能一个一个的进行编译,很费时间,不能批处理.于是经过度娘与自己的摸索,利用jad完全可以做到(上面不重要,下面才是重点

Java前端编译:Java源代码编译成Class文件的过程

Java前端编译:Java源代码编译成Class文件的过程 在上篇文章<Java三种编译方式:前端编译 JIT编译 AOT编译>中了解到了它们各有什么优点和缺点,以及前端编译+JIT编译方式的运作过程. 下面我们详细了解Java前端编译:Java源代码编译成Class文件的过程:我们从官方JDK提供的前端编译器javac入手,用javac编译一些测试程序,调试跟踪javac源码,看看javac整个编译过程是如何实现的. 1.javac编译器 1-1.javac源码与调试 javac编译器是官方

Couldn&#39;t load libPassword from loader:NDK开发中C文件编译成cpu的so类库时,找不到类库报错的原因之一

LogCat输出: 03-03 12:42:32.665: E/AndroidRuntime(32432): FATAL EXCEPTION: main03-03 12:42:32.665: E/AndroidRuntime(32432): Process: com.toro.passwordencode, PID: 3243203-03 12:42:32.665: E/AndroidRuntime(32432): java.lang.UnsatisfiedLinkError: Couldn't

如何把js文件编译成dll供页面调用

1. 在解决方案中添加一个项目:JSControl 2. 在这个项目添加一个js文件(JScript1.js) 脚本的内容: function showAlert(){ alert('Today is a good dary'); } 3. 改变JScript1.js的属性,Build Action为Embedded Resource(嵌入的资源) 4. 在JSControl项目的AssemblyInfo.cs文件中添加一行:(注意JSControl.JScript1.js,JSControl是

python程序编译成exe文件

最近越来越喜欢使用python写工具.使用的时候,发现程序内部成员python安装目录常常不同,如果用bat双击执行,常常需要修改从svn上down下来的bat文件中python.exe的路径.而给策划.美术或者QA使用,更是需要让他们安装python和各种插件,他们能把你烦死.所以,必须把py文件转成exe文件,然后做到傻瓜式的双击执行. 我了解到有两个常用的套件:py2exe和pyinstaller,我选用的是pyinstaller.这里记录一下使用方法. 一.首先,上官网下载,http:/

将 Python3 文件打包成 exe 文件

我们用 Python 写好的代码,如何给别人在没有配置 Python 环境的情况下直接使用呢?尤其是面向 windows 众. 因为 Python 是一门解释性的语言,离开了 Python 解释器,Python 无法执行.但是我们还有相应的解决方案,答案就是打包成 .exe 可执行文件 当然这篇正文前废话两句,一是看过之前网上的一些吐槽,因为没有学过编译原理,所以也不能不懂乱讲,姑且称之为半引用吧: Python 的哲学是所见即所得,脚本类语言也注定了其加密性不如其他编译生成的语言(比如C++,

chm文件转换成html文件,解决chm文件无法使用浏览器打开的问题

CHM是英语“Compiled Help Manual”的简写,即“已编译的帮助文件”.CHM是微软新一代的帮助文件格式,利用HTML作源文,把帮助内容以类似数据库的形式编译储存. CHM文件的好处就是轻量.便捷.只读等,通过目录,能很方便的定位到文件中的各个位置:但是它也有很大的缺陷,就是只能使用特定的阅读器打开,比如微软提供的HTMLHelpWorkshop(系统自带).eTextWizard等.但是我们在使用过程中,会经常遇到需要把CHM文件放到网站上,供用户查看,但是浏览器却不支持CHM