如何安装和管理python扩展包

怎么写python扩展

1.python扩展的c代码在哪里写

在哪里写都可以啊,重要的是编译过程。

给你介绍下编译过程吧。在windows和linux下面,对C扩展的编译方法是不一样的,我们先来看windows版的。

我们用C实现一个简单的加法。首先新建一个文件add.c,代码如下:#include ; static PyObject* add(PyObject *self, PyObject *args); //一定声明为static,把他们限制在这个文件范围里。

几乎所有的参数都是PyObject类型,在python,每个东西都是object。 static PyObject* add(PyObject* self, PyObject* args) { int x=0 ; int y=0; int z=0; if (! PyArg_ParseTuple(args, "i|i", &x, &y)) return NULL; /*第一个参数是self,这个是python用的, 每个函数都要有。

我们暂时不管。args是一个参数列表。

她把所有的参数都整合成一个string。所以 我们需要从这个string里来解析我们的参数。

PyArg_ParseTuple来完成这个任务。第一个参数是args, 就是我们要转换的参数。

第二个是格式符号。 “s”代表是个string。

从args里提取一个参数就写"s", 两个的话就写"s|s", 如果是一个string,一个int,就写"s|i", 和printf差不多。第三个 参数就是提取出来的参数放置的真正位置。

必须传递这个参数的地址。对于add, 他将提取两个参数。

分别是x和y。*/ z=x+y; return Py_BuildValue("i", z); /*调用完之后我们需要返回结果。

这个结果是c的type或者是我们自己定义的类型。必须把他转换成PyObject, 让python认识。

这个用Py_BuildValue 来完成。他是PyArg_ParseTuple的逆过程。

他的第一个参数和PyArg_ParseTuple的第二个参数一样, 是个格式化符号。第三个参数 是我们需要转换的参数。

Py_BuildValue会把所有的返回只组装成一个tutple给python。*/ } static PyMethodDef addMethods[] = { {"add", add, METH_VARARGS, "Execute a shell command."}, {NULL, NULL, 0, NULL} }; /*这个是一个c的结构。

他来完成一个映射。 我们需要把我们扩展的函数都映射到这个表里。

表的第一个字段是python真正认识的。是python 里的方法名字。

第二个字段是python里的这个方法名字的具体实现的函数名。 在python里调用add, 真正执行的是用c写的add函数。

第三个字段是METH_VARARGS, 他告诉python,add是调用c函数来实现的。第四个字段是这个函数的说明。

如果你在python里来help这个函数,将显示这个说明。相当于在python里的函数的文档说明。

*/ PyMODINIT_FUNC initadd() { Py_InitModule("add", addMethods); } /*注意,这个函数的名字不能改动。 必须是init+模块名字。

我们的模块名字是add。所以这个函数是initadd()。

这样python在导入add 的模块时候,才会找到这个函数,并调用。这个函数调用Py_InitModule来将模块名字和映射表结合在一起。

他表示,add这个模块使用addMethods这个映射表。python应该这样导入我们的module的.*/新建一个setup.py,内容如下:from distutils.core import setup, Extension module1 = Extension('add', sources = ['add.c']) setup (name = 'PackageName', version = '1.0', description = 'This is a demo package', ext_modules= [module1])组建:(由于我的机器上装了mingw,所以指定了mingw32。

默认的编译器是vs2008。参考:python setup.py build --compiler=mingw32 执行后会在当前目录生成一个build目录及文件:build\lib.win32-2.6\add.pyd 将add.pyd拷贝到当前目录,并写一个测试文件test.py,代码如下:import add print add.add(3,4) 执行一下,输出为7 OK,基本上就是如此了。

在linux下的话,会有少许不同.即直接用makefile将add.c编译成.so,python可以直接import,makefile代码如下:PYLIB = /usr/bin PYINC = /usr/include/python2.6 all: add.c gcc add.c -g -I$(PYINC) -shared -L$(PYLIB) -lpython2.6 -o add.so clean: rm -f add.so用同样的测试代码,可以测试通过。

2.python怎么作为c语言的扩展

Python是一种面向对象的解释型计算机程序设计语言,由荷兰人Guido van Rossum于1989年发明,第一个公开发行版发行于1991年。

Python是纯粹的自由软件, 源代码和解释器CPython遵循 GPL(GNU General Public License)协议[1] 。Python语法简洁清晰,特色之一是强制用空白符(white space)作为语句缩进。

Python具有丰富和强大的库。它常被昵称为胶水语言,能够把用其他语言制作的各种模块(尤其是C/C++)很轻松地联结在一起。

常见的一种应用情形是,使用Python快速生成程序的原型(有时甚至是程序的最终界面),然后对其中[2] 有特别要求的部分,用更合适的语言改写,比如3D游戏中的图形渲染模块,性能要求特别高,就可以用C/C++重写,而后封装为Python可以调用的扩展类库。需要注意的是在您使用扩展类库时可能需要考虑平台问题,某些可能不提供跨平台的实现。

在python中扩展c语言模块可以总结为以下几步:1.首先,编写包含py接口的c源文件,称为wrap.c。这一步可以使用swig带过。

例如:swig -python foo.i2.接着,对wrap.c进行编译,生成XX.so。这一步可以使用 distutils带过。

如果要用 distutils的话,则需要首先编写一个py脚本。示例:setup(name = 'example', version = '1.0', ext_modules = [Extension('example', ['wrap.c','example.c'])]) 注意:句子中的list不仅不要包含wrap源文件,还要包含函数的原始源文件3.上一步的so文件便是最终可以使用的库文件,把该文件放入py的lib中或者当前目录,即可导入c语言扩展模块进行使用。

如果之前用过swig,还要把相应的so文件移入模块文件夹中并在文件名前加上_。示例: cp printf.so /usr/lib64/python2.7/site-packages/_printf.so。

3.怎样用python编写一个可扩展更新的exe程序

1. 手动制作python的exe可执行程序Python没有内建一个编译为exe的功能。给python程序的部署带来不少的麻烦。所以就会出现一些py2exe之类的很不错的工具,用于自动把.py文件编译为.exe文件。

最近抽空研究了一下手动实现类似py2exe的功能,希望加强对python的了解。结果还相当不错。把结果记录下来,与大家共享。

1.1. 原理文中所描述的方法,基于python的以下几个功能

1) python程序运行时,会在sys.path指定的路径中查找库文件。

2) python从2.3开始,支持从zip文件中import库(支持.py,.pyc和.pyo,但不支持.pyd)

3) python提供C API,让c语言的程序,可以很方便的调用python的程序

1.2. 实际步骤注:假设python安装在c:\python25目录中,最后的可执行文件放到d:\dist目录中

1) 先去c:\python25\Lib目录,把所有文件都复制出来,比如复制到d:\pythonlib目录中

4.Python的C语言扩展

C-Python,或者CPython,指C实现的Python虚拟机的基础API。最通用的Python就是是基于C实现的,它的底层API称为C-Python API,所有Python代码的最终变成这些API以及数据结构的调用,才有了Python世界的精彩。

Cython,准确说Cython是单独的一门语言,专门用来写在Python里面import用的扩展库。实际上Cython的语法基本上跟Python一致,而Cython有专门的“编译器”先将 Cython代码转变成C(自动加入了一大堆的C-Python API),然后使用C编译器编译出最终的Python可调用的模块。

GIL:Global Interpreter Lock,是Python虚拟机的多线程机制的核心机制,翻译为:全局解释器锁。其实Python线程是操作系统级别的线程,在不同平台有不同的底层实现(如win下就用win32_thread, posix下就用pthread等),Python解释器为了使所有对象的操作是线程安全的,使用了一个全局锁(GIL)来同步所有的线程,所以造成“一个时刻只有一个Python线程运行”的伪线程假象。GIL是个颗粒度很大的锁,它的实现跟性能问题多年来也引起过争议,但到今天它还是经受起了考验,即使它让Python在多核平台下CPU得不到最大发挥。

5.怎么添加自已写的python脚本

一种方法是直接放在项目里,但这样是不能做到公用的。你每新建一个项目,都要把代码放进去。

推荐下面的方法:

1、将公用的文件放在一起

如~/python/common

模块utils.py,放在这里:~/python/common/utils.py

2、在你的新项目里这样包含它:

import utils

3、在运行你的脚本前,要加环境变量才可以,否则找不到包的位置:

export PYTHONPATH=~/python/common

这个环境变量也可以写在/etc/profile里,避免每次都export

还有一种方法,就是使用setuptools制作安装包。第三方的包都是采用这种方式。但对于正在开发和调试的库,会比较不方便。

希望能帮到你!

6.学会python语法之后怎么写

python程序员学习路线图 python+ 数据结构和算法 + linux + 软件工程 + web开发 + git版本控制+ 沟通技巧等等。

Python(英语发音:/ˈpaɪθən/), 是一种面向对象、解释型计算机程序设计语言,由Guido van Rossum于1989年发明,第一个公开发行版发行于1991年。

Python是纯粹的自由软件, 源代码和解释器CPython遵循 GPL(GNU General Public License)协议。

Python语法简洁清晰,特色之一是强制用空白符(white space)作为语句缩进。

Python具有丰富和强大的库。它常被昵称为胶水语言,能够把用其他语言制作的各种模块(尤其是C/C++)很轻松地联结在一起。常见的一种应用情形是,使用Python快速生成程序的原型(有时甚至是程序的最终界面),然后对其中有特别要求的部分,用更合适的语言改写,比如3D游戏中的图形渲染模块,性能要求特别高,就可以用C/C++重写,而后封装为Python可以调用的扩展类库。需要注意的是在您使用扩展类库时可能需要考虑平台问题,某些可能不提供跨平台的实现。

怎么写python扩展

转载请注明出处育才学习网 » 如何安装和管理python扩展包

知识

罗梅芬用日文怎么写(罗钰潇日语怎么写)

阅读(21424)

本文主要为您介绍罗梅芬用日文怎么写,内容包括伊蕾娜日语怎么写,王雪菲用日文怎么说,张佳怡在日语中怎么写啊怎么读啊。罗 ら ラ ra钰 ぎょく ギョク gyoku潇 しょう シヨウ shou第一列:日语汉字,写法同汉字,都要用繁体,这三个都挺难写的,看

知识

邓先生的英文怎么写(1~40的英文怎么说)

阅读(10437)

本文主要为您介绍邓先生的英文怎么写,内容包括“邓先生”用英语怎么写,1~40的英文怎么说,漂亮英文beautiful缩写怎么写。1 one 2 two 3 three 4 four 5 five 6 six 7 seven 8 eight 8 nine 10 te

知识

一个人布满皱纹怎么写(描写人物皱纹的句子)

阅读(9512)

本文主要为您介绍一个人布满皱纹怎么写,内容包括描写人物皱纹的句子,描写人物皱纹的句子,皱纹怎么描写。、老人脸上布满了皱纹,那一条条曲折不均的像是墙上斑驳的印迹,爬满了面容,留下了岁月的痕迹。2、外祖父是一位年过六旬的白发老人。在他

知识

登录接口怎么写(php登录的接口怎么写)

阅读(7757)

本文主要为您介绍登录接口怎么写,内容包括php登录的接口怎么写,网页登陆接口怎么做,网站登录接口程序怎么做。PHP 接口 接口 使用接口(interface),你可以指定某个类必须实现哪些方法,但不需要定义这些方法的具体内容。我们可以通过int

知识

档案奖惩情况怎么写(奖惩情况怎么写)

阅读(9598)

本文主要为您介绍档案奖惩情况怎么写,内容包括奖惩情况怎么写,个人简历及奖惩情况怎么填写,个人简历里面奖惩情况怎么写。在简历里的“奖励”部分,列出与你所获得的并与你的求职目标相关的荣誉、奖励和奖金。你既可以按时间顺序排列,也可以按

知识

头孢克肟拼音怎么写(头孢克肟的肟念什么)

阅读(7999)

本文主要为您介绍头孢克肟拼音怎么写,内容包括头孢克肟片全名拼音,头孢克肟片全名拼音,头孢克肟的肟念什么。肟[wò] :是含有羰基的醛、酮类化合物与羟胺作用而生成的有机化合物,可以参与许多有机化学反应,例如经典的Beckmann重排就是肟为底

知识

一库搜用日语怎么写(日语一库是什么意思)

阅读(7985)

本文主要为您介绍一库搜用日语怎么写,内容包括日语大神来,看动漫里的主人公说一句:恰,一库搜这是什么意思,一库一库;一搜库这两个日语是什么意思怎么写,看片都有“一库”(日语)是什么意。一库的意思就是“出发,出去”的意思。日语「行く」的音译

知识

外租无人机广告怎么写(植保无人机广告语)

阅读(6997)

本文主要为您介绍外租无人机广告怎么写,内容包括求一个无人机创意广告词谢谢巨友们了,求一关于无人机的广告标语,求一关于无人机的广告标语我们公司是做无人机的,新成立的公司,求。DJI大疆创新研发的的MG-1农业植保机专为农村作业环境设计,

知识

河南话que怎么写(河南话的nenna怎么写)

阅读(6529)

本文主要为您介绍河南话que怎么写,内容包括que怎么写,河南话的nenna怎么写,que怎么写。尿一壶(niào yī hú)关系密切,观点一致。例:“他俩今天尿一壶啦。”●尿(niào)⑴、从尿道排泄的液体。⑵、排泄小便。⑶、不放

知识

国学经文的论文怎么写(国学征文该怎么写)

阅读(7110)

本文主要为您介绍国学经文的论文怎么写,内容包括国学征文该怎么写,弟子规的400论文,关于国学经典的征文怎么写。“子曰:“温故而知新,可以为师”……小时,总是觉得国学就是没用的,古人写的话,我们还需要背,每次老师教给我们时,我总是会让思想开一

知识

化学实验总结怎么写(化学实验报告小结怎么写)

阅读(5393)

本文主要为您介绍化学实验总结怎么写,内容包括化学实验总结怎么写,化学实验报告小结怎么写,化学实验小结怎么写。化学实验报告的书写: 一般情况下化学实验报告是根据实验步骤和顺序从七方面展开来写的: 1.实验目的:即本次实验所要达到的目标或

知识

蝴蝶豌豆拼音怎么写(豌豆的拼音是什么)

阅读(5823)

本文主要为您介绍蝴蝶豌豆拼音怎么写,内容包括蝴蝶怎么拼音的,豌豆的拼音是什么,蝴蝶的拼音是什么。豌豆的拼音是[wān dòu]。豌豆是豆科一年生攀援草本,高0.5-2米。全株绿色,光滑无毛,被粉霜。叶具小叶4-6片,托叶心形,下缘具

知识

海绵宝宝用英文怎么说(海绵宝宝用英文怎么说)

阅读(6508)

本文主要为您介绍海绵宝宝用英文怎么说,内容包括海绵宝宝用英语怎么说,海绵宝宝用英文怎么说,海绵宝宝英文名是什么。1. SPONGEBOB SQUAREPANTS 近期很夯的一步卡通影片《海绵宝宝》(SpongeBob SquarePants)是一系

知识

茶盏怎么用(茶盏在茶道中干嘛用)

阅读(5421)

本文主要为您介绍茶盏怎么用,内容包括茶盏怎么用我要写一篇200字左右的茶盏的使用说明,求指教,茶盏在茶道中干嘛用,问一下斗笠盏如何使用现在是不是很少有人使用它,它的意义。苏东坡的名句"从来佳茗似佳人",典型地代表了唐宋及以后的文人墨客,

知识

thinkpad小红点怎么用(怎么学习使用thinkpad小红点)

阅读(7580)

本文主要为您介绍thinkpad小红点怎么用,内容包括怎么学习使用thinkpad小红点,thinkpad小红点怎么用,求教:THINKPAD的小红点使用方法。Thinkpad 小红点最高效的使用方法为:左手拇指按左键,无操作时在左键待命2、右手拇指按右键,同时兼按空格键及