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

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

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

参考: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文件夹下面才可以用,拷贝也行。

 

cython 成功创建import 模块的更多相关文章

  1. SpringCloud创建Config模块

    1.说明 本文详细介绍Spring Cloud创建Config模块的方法, 基于已经创建好的Spring Cloud父工程, 请参考SpringCloud创建项目父工程, 创建Config模块这个子工 ...

  2. SpringCloud创建Gateway模块

    1.说明 本文详细介绍Spring Cloud创建Gateway模块的方法, 基于已经创建好的Spring Cloud父工程, 请参考SpringCloud创建项目父工程, 和已经创建好的Eureka ...

  3. SpringCloud创建Eureka模块

    1.说明 本文详细介绍Spring Cloud创建Eureka模块的方法, 基于已经创建好的Spring Cloud父工程, 请参考SpringCloud创建项目父工程, 在里面创建Eureka模块, ...

  4. python import 模块异常问题

    新项目开始了,(tornado,python) 结果出现了一个比较诡异的问题. import 自己的在conf文件夹下配置文件settings的时候, from conf.settings impor ...

  5. python 在不同层级目录import 模块的方法

    有一个文件夹/home/a,  里面有个模块叫b.py,  我怎么把他import到程序里? 1). import sys; sys.path.append("/home/a/") ...

  6. YII 创建后台模块

    1,在protected/config/main.php目录下修改如下目录 'modules'=>array( // uncomment the following to enable the ...

  7. python 中如何导入一个自己创建的模块

    导入模块的语句的三种方法: 1.import module 2.from module import name1,[name2,name3....] 3.from module import * 先看 ...

  8. import模块/包--软件开发规范

    一. 模块 模块:就是一个包含了python定义和声明的文件,文件名就是模块名字加上.py的后缀. import加载的模块分为四个通用类别: 1 使用python编写的代码(.py文件) 2 已被编译 ...

  9. python之import模块及包的调用

    模块概念 在Python中,一个.py文件就称之为一个模块(Module).使用模块组织代码,最大的好处是大大提高了代码的可维护性 模块一共三种:python标准库.第三方模块.应用程序自定义模块. ...

随机推荐

  1. css3 二维码 添加 扫描特效

    <section data-role="paragraph" class="_135editor" style="border: 0px non ...

  2. 绑定到外部验证服务LDAP、配置 autofs

    题1:您的系统需要按照以下要求绑定到这个服务上:验证服务器的基本 DN 是: dc=xxxx,dc=xxxx,dc=xxxx. 帐户信息和验证信息都是由 LDAP 提供的.连 接 需 要 使 用 证 ...

  3. miui获取完整root

    1.先解锁BL锁 需要在miui官网申请,下载相关软件,申请后下载软件,提示需要过xx小时才能解锁(我是72小时) 2.解开BL锁后,在系统设置里开启root权限 3.开启root权限后,发现/sys ...

  4. 用python完成带有进度条的圆周率计算

    代码如下:import math import time scale= s,m,=, print("执行开始".center(scale//2, "-")) s ...

  5. Bytom Java版本离线签名

    比原项目仓库: Github地址:https://github.com/Bytom/bytom Gitee地址:https://gitee.com/BytomBlockchain/bytom tx_s ...

  6. jackson中@JsonProperty、@JsonIgnore等常用注解总结

    本文为博主原创,未经允许不得转载: 最近用的比较多,把json相关的知识点都总结一下,jackjson的注解使用比较频繁, jackson的maven依赖 <dependency> < ...

  7. LINQ之路16:LINQ Operators之集合运算符、Zip操作符、转换方法、生成器方法

    本篇将是关于LINQ Operators的最后一篇,包括:集合运算符(Set Operators).Zip操作符.转换方法(Conversion Methods).生成器方法(Generation M ...

  8. springboot添加多数据源 以及 动态添加数据源动态切换数据源

    <!-- Druid 数据连接池依赖 --> <dependency> <groupId>com.alibaba</groupId> <artif ...

  9. less点滴

    1.简单的嵌套: less中显示: css中显示 2.作为值的变量: less中: @green: #801f77;@baise:white; header,footer{ background: @ ...

  10. HBase过滤器的使用

    一.常用过滤器: 1.数据准备: Rowkey:001 Family:Quilfifier address value: 昆明市西山区 Rowkey:001 Family:Quilfifier age ...