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:\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
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 模块的更多相关文章
- SpringCloud创建Config模块
1.说明 本文详细介绍Spring Cloud创建Config模块的方法, 基于已经创建好的Spring Cloud父工程, 请参考SpringCloud创建项目父工程, 创建Config模块这个子工 ...
- SpringCloud创建Gateway模块
1.说明 本文详细介绍Spring Cloud创建Gateway模块的方法, 基于已经创建好的Spring Cloud父工程, 请参考SpringCloud创建项目父工程, 和已经创建好的Eureka ...
- SpringCloud创建Eureka模块
1.说明 本文详细介绍Spring Cloud创建Eureka模块的方法, 基于已经创建好的Spring Cloud父工程, 请参考SpringCloud创建项目父工程, 在里面创建Eureka模块, ...
- python import 模块异常问题
新项目开始了,(tornado,python) 结果出现了一个比较诡异的问题. import 自己的在conf文件夹下配置文件settings的时候, from conf.settings impor ...
- python 在不同层级目录import 模块的方法
有一个文件夹/home/a, 里面有个模块叫b.py, 我怎么把他import到程序里? 1). import sys; sys.path.append("/home/a/") ...
- YII 创建后台模块
1,在protected/config/main.php目录下修改如下目录 'modules'=>array( // uncomment the following to enable the ...
- python 中如何导入一个自己创建的模块
导入模块的语句的三种方法: 1.import module 2.from module import name1,[name2,name3....] 3.from module import * 先看 ...
- import模块/包--软件开发规范
一. 模块 模块:就是一个包含了python定义和声明的文件,文件名就是模块名字加上.py的后缀. import加载的模块分为四个通用类别: 1 使用python编写的代码(.py文件) 2 已被编译 ...
- python之import模块及包的调用
模块概念 在Python中,一个.py文件就称之为一个模块(Module).使用模块组织代码,最大的好处是大大提高了代码的可维护性 模块一共三种:python标准库.第三方模块.应用程序自定义模块. ...
随机推荐
- 一.rest-framework之版本控制 二、Django缓存 三、跨域问题 四、drf分页器 五、响应器 六、url控制器
一.rest-framework之版本控制 1.作用 用于版本的控制 2.内置的版本控制 from rest_framework.versioning import QueryParameterVer ...
- 牛客练习赛43C Tachibana Kanade Loves Review
题目地址 Link 题解 虚点这种东西还是没有掌握好啊. 考虑建一个虚点,向已经学会的东西连一条边权为0的边,关系正常连边,单独学的从虚点连一条边过去. 然后做一遍最小生成树就得到答案了. 这题略卡常 ...
- 从实验室走向世界:HSP90抑制剂,一种新的癌症药物
热休克蛋白90(HSP90)是细胞内一种普遍存在的.十分保守的以及有高度活性的蛋白质,它在肿瘤细胞内的含量要比正常细胞多.作为一种分子伴侣,HSP90协助不同种类的癌蛋白(即HSP90的服务蛋白)进行 ...
- angular-material(一)
1.引入文件(angular-material.css.angular.min.js.angular-animate.js.angular-aria.min.js.angular-material.j ...
- Jupyter Notebook插入图片的4种方法
来自:https://blog.csdn.net/qq_33039859/article/details/78507316 方法1: ![title](img/python.png) Markdown ...
- IDEA中更改Tomcat服务器的URL
先别参考以下的做法,貌似出了点状况,后续修正!!! 直接上图吧 看IDEA的右上角 点击黄色方框内的Edit Configurations,进入以下的编辑面 后面四个框内的都可以修改,当然不要修改和其 ...
- windows平台下安装linux
win10系统下,可直接安装linux系统,且可打开linux的命令行 安装 1.开始--->微软应用商店 进入之后,在搜索框,搜索linux 在搜索结果中,选择要安装的 linux 系统 这里 ...
- 20190318wdVBA_替换下划线
Sub 替换下划线() Selection.HomeKey wdStory Selection.Find.ClearFormatting Selection.Find.Font.Underline = ...
- Android24以上拍照代码
public void takePic(){ //创建File对象,用于存储拍照后的照片 File outputImage = new File(getExternalCacheDir()," ...
- 基于Xshell使用密钥方式连接远程主机
基于Xshell使用密钥方式连接远程主机 连接远程主机,就验证身份而言,一般有两种方式,一种是通过用户密码:另一种通过公钥的方式(Public Key). 图1 xshell支持验证登录用户的方式 下 ...