zoukankan      html  css  js  c++  java
  • cython 成功创建import 模块

    又是因为别人代码里有这么一个部分,用到了cython,,简而言之,就是利用这个模块调用C语言,从而加速程序运行,其中具体怎么调用我还没整清楚,但基本用法差不多了解了。

    1 安装:https://www.lfd.uci.edu/~gohlke/pythonlibs/    在这个里面找到 根据自己的版本找到cython 然后 pip install ....whl

    2 编写代码:需要两个 test.py 和  setup.py  创建在自己的python目录下(我创建了一个cython文件)-e.g: C:Python27cython

    参考:https://www.cnblogs.com/jianmu/p/7497274.html?utm_source=debugrun&utm_medium=referral

    # test.py
    def
    say_hello(): print "hello world"
    # setup.py
    from
    distutils.core import setup from Cython.Build import cythonize   setup(ext_modules = cythonize("test.py"))

    3 编译代码:在cmd运行窗口将位置改到刚才创建的文件夹--然后 编译这段话 :

    python setup.py build_ext  --inplace

    可能出现如下错误:找不到 error: Unable to find vcvarsall.bat

    一般解决办法:直接CMD中输入set 看看目前路径设置情况,发现只有VS140COMNTOOLS 的位置,没有 VS90COMNTOOLS 的位置(python2.x都是要配置VS90的路径)所以需要将VS140的位置复制给VS90:

    CMD输入SET VS90COMNTOOLS=%VS140COMNTOOLS%(VS140=VS2015,PS:如果是python3.x 则要设置VS100的位置)

    重新输入SET,看到下面两个地址都有的位置;还有就是,可能这会儿关了,一会而又要重新设置,所以我在电脑-属性-高级设置-环境变量的系统变量中加入了值:VS90COMNTOOLS=%VS140COMNTOOLS%(不知道有没有用)

    上面解决完后,,如果没有大问题,再次输入python setup.py build_ext  --inplace就成功了

    4 检验模块 进入python,,输入

    import test 
    test.say_hello()

    5 上面只是我的测试部分,我真正要执行的是别的:

    在执行编译代码部分:之前需要的文件包括test.py 和setup.py 但是这里别人代码里的是 CMacroDemand.pyx 和 setup.py

    .py 和 .pyx 应该是都可以编译的;

    6 setup 文件到底怎么写:

    我的setup里面要导入numpy,所以 include_dirs=[numpy.get_include()],这句不能少,因为之前有问题让我我删掉 include_dirs过,后来又提示有问题

    Cython: fatal error: 'numpy/arrayobject.h' file not found, using numpy

    解决方案:https://stackoverflow.com/questions/39114132/cython-fatal-error-numpy-arrayobject-h-file-not-found-using-numpy

    Cython结合Numpy也很方便。

    如果使用numpy的话,一般setup.py要这样写:

    from distutils.core import setup, Extension
    from Cython.Build import cythonize
    import numpy
    
    setup(ext_modules=cythonize("test.pyx"),include_dirs=[numpy.get_include()])
    
    作者:季文瀚
    链接:https://www.zhihu.com/question/23003213/answer/105223038

    然后 可以直接输入

    python setup.py build(比之前那个少一点东西,估计也是参数位置等问题我也不研究了,我用的就是这句)

    具体用用哪句看看这个把:https://www.cnblogs.com/freeweb/p/6548208.html 

    编译完之后

    会有一个build文件夹--lib文件夹,里面有.pyd文件,我的是从里面挪出来的,就可以import 模块了。

    ps:一些别的cython完整流程的博客:

    https://www.cnblogs.com/nucdy/p/7736155.html

    https://zhuanlan.zhihu.com/p/24311879

    PPS:最后的最后,我刚刚试了一下,,在别的地方用python-- import CUtils,还不行,,必须要在那个cython文件夹下面才可以用,拷贝也行。

     
  • 相关阅读:
    muduo 库解析之四:TimeZone
    muduo 库解析之三:Date
    muduo 库解析之九:Condition
    muduo 库解析之八:Mutex
    muduo 库解析之七:Atomic
    [linux]查看文件目录是否为硬链接
    [go] 解决:concurrent write to websocket connection
    [windows] 保存浏览器网页长截图
    [项目] 系统迁移的几个注意点
    [MySQL] order by field 自定义排序
  • 原文地址:https://www.cnblogs.com/Roxy121314/p/9024344.html
Copyright © 2011-2022 走看看