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标准库.第三方模块.应用程序自定义模块. ...
随机推荐
- .NET 实用扩展方法
.NET 实用扩展方法(持续更新...) 1. 字符串转换为可空数值类型(int, long, float...类似) /// <summary> /// 将字符串转换成32位整数,转换失 ...
- 使用windeployqt工具来进行Qt的打包发布
https://blog.csdn.net/sinat_36264666/article/details/73305712
- Codeforces Round #495 (Div. 2) C. Sonya and Robots
http://codeforces.com/contest/1004/problem/C 题意: 在一行上有n个数字,现在在最左边和最右边各放置一个机器人,左右机器人各有一个数字p和q.现在这两个机器 ...
- mysql数据库连接出问题,提示超时 java.sql.SQLException: An attempt by a client to checkout a Connection has timed out.解决办法
mysql数据库连接出问题,提示超时,后来发现问题在于连接mysql数据库的jar包跟数据库版本不对应导致的,更换jar包一致就解决了.
- HADOOP HA 踩坑 - org.apache.hadoop.hdfs.qjournal.protocol.JournalNotFormattedException: Journal Storage Directory /mnt/data1/hadoop/dfs/journal/hdfscluster not formatted
报错:在journalnode的log中: org.apache.hadoop.hdfs.qjournal.protocol.JournalNotFormattedException: Journal ...
- antd Select进阶功能 动态更新、函数防抖
一.动态更新Options Antd Select自带的搜索功能很多时候需要结合后端的接口,输入一个关键字的时候会自动更新选择器的选项. 下面列一些注意点 基础实现 选择器选项必须和每次更新的数据挂钩 ...
- ES6标准之箭头函数
语法 具有一个参数的简单函数 var single = a => a single('hello, world') // 'hello, world' 没有参数的需要用在箭头前加上小括号 var ...
- Linux下设置svn开机自启动
方式一:centos 7 设置svn开机自启动 使用新的systemctl 服务命令 (笔者成功验证过,该方式可行) [root@iZjvr37lpviqbkZ init.d]# vi /lib/s ...
- springboot aop 不生效原因解决
最近参照资料创建Springboot AOP ,结果运行后aop死活不生效. 查明原因: 是我在创建AOP类时选择了Aspect类型,创建后才把这个文件改为Class类型,导致一直不生效, 代码配置这 ...
- nginx ----> 官网about页面(翻译)
Nginx about链接:https://nginx.org/en/ nginx 基本的HTTP服务器功能其他HTTP服务器功能邮件代理服务器功能TCP / UDP代理服务器功能架构和可扩展性经测试 ...