Python的ctypes 和pyinstaller】的更多相关文章

这几天在学习python的爬虫, 无意中看到一篇博文 Python爬虫之自制英汉字典 发现里面的ctypes 和pyinstaller 还不了解,这边文章说白了就是你输入英文, python读取你的输入 然后发送一个http请求到有道翻译,然后把翻译的结果打印出来,这里使用了ctypes来设置打印窗口的颜色,使用pyinstaller来打包python程序, 网上关于pyinstaller和ctypes介绍已经很多了 Python打包方法——Pyinstaller Python使用pyinsta…
pyinstaller可以将python写好的脚本打包成exe文件,方便windows用户在没有python环境下运行.这个程序完全跨平台,包括Windows.Linux.Mac OS X等多个操作系统下运行.因为我用的是win7,以下直接使用windows打包讲解,不同平台上使用 PyInstaller方法是一样的,它们支持的选项也是一样的. 安装Pyinstaller Python默认不包含Pyinstaller模块,因此需要自行安装 与安装其它Python模块一样,使用pip命令安装即可,…
Python程序执行 py文件:直接提供源码,需要使用者自行安装Python并且安装依赖的各种库 pyc文件:pyc文件是Python解释器可以识别的二进制码,是跨平台的,需要使用者安装相应版本的Python和依赖库 可执行文件:对于非码农用户或者一些小白用户,你让他装个Python同时还要折腾一堆依赖库,那简直是个灾难.对于此类用户,最简单的方式就是提供一个可执行文件,只需要把用法告诉Ta即可.比较麻烦的是需要针对不同平台需要打包不同的可执行文件(Windows,Linux,Mac,…) 各种…
转载请注明出处: http://www.cnblogs.com/darkknightzh/p/6135514.html 参考网址: https://docs.python.org/2/library/ctypes.html--ctypes的官方文档 http://eli.thegreenplace.net/2008/08/31/ctypes-calling-cc-code-from-python/--提供了一个不涉及类的例子 http://stackoverflow.com/questions/…
工具:CodeBlocks 新建一个分享库工程( Shared library ),随便编写一个C代码的函数 // test.c #include <stdio.h> int fib(int n) { || n == ) { ; } else { ) + fib(n-); } } 编译,在bin/Debug/目录中生成libtest.dll动态链接库文件,该文件可以通过ctypes模块进行访问使用,在该文件目录下新建一个test.py文件 # test.py import ctypes imp…
最近由于项目需要,以前的python文件需要编辑为EXE供前端客户使用. 由于最早接触的是distutils,所以一开始准备使用distutils和py2exe搭配来进行python的exe化,也就是传统的使用setup.py的方式来进行exe安装.但是结果都不是很好,不是很如人意.并且py2exe所使用的一个python 包互相排斥,只要安装了这个包,就无法进行exe化.甚至代码里面都不需要导入,就会报错. 因此,只能无奈放弃了py2exe工具.转而使用pyinstaller.使用感受真的是甩…
[pyinstaller] pyinstaller在他们的官方网站上下载:http://www.pyinstaller.org/ 下载完pyinstaller之后还要安装一个支持包pywin32. 这个包允许了python访问windows系统的一些API,如果没有就会在编译过程中报错. 当然,也可以用pip install pyinstaller来一站式下载pyinstaller和它的支持包. ■ 打包步骤 用cmd键入python ${pyinstaller根目录}/pyinstaller.…
项目中可能会经常用到第三方库,主要是出于程序效率考虑和节约开发时间避免重复造轮子.无论第三方库开源与否,编程语言是否与当前项目一致,我们最终的目的是在当前编程环境中调用库中的方法并得到结果或者借助库中的模块实现某种功能.这个过程会牵涉到很多东西,本篇文章将简要的介绍一下该过程的一些问题. 1.背景 多语言混合编程可以弥补某一种编程语言在性能表现或者是功能等方面的不足.虽然所有的高级语言都会最终转换成汇编指令或者最底层的机器指令,但是语言本身之间的千差万别很难一言以蔽之,这对不同语言之间相互通信造…
1.背景说明 [Python版本]Python 2.7.14 [系统平台]Windows 7 [优缺点描述]据说PyInstaller 比较慢,但是PyInstaller打包出来的exe简洁(就一个文件),没有一堆的dll和配置文件等. 2.安装方式 pip install PyInstaller 3.打包方式 pyinstaller -F main.py 参数-F 表示针对.py 文件产生对应的执行程序可部署.更多参数请用  pyinstaller -h 来获取,新版本的参数有所调整. 4.一…
在python中通过ctypes可以直接调用c的函数,非常简单易用 下面就一步一步解释用法吧,以Linux为例讲解. 1, 首先确定你的python支持不支持ctypes python2.7以后ctypes已经是标配了,2.4以后的版本得自己装下ctypes 2,加载动态库 两种加载方式 >>> from ctypes import *      >>> libc = cdll . LoadLibrary ( "libc.so.6" )      &…
!!!强烈推荐的好文章!!! 对象的两个基本属性 Python所有对象结构体中的头两个字段都是相同的: refcnt:对象的引用次数,若引用次数为0则表示此对象可以被垃圾回收了. typeid:指向描述对象类型的对象的指针. 通过ctypes,我们可以很容易定义一个这样的结构体:PyObject. 本文只描述在32位操作系统下的情况,如果读者使用的是64位操作系统,需要对程序中的一些字段类型做一些改变. from ctypes import * class PyObject(Structure)…
PyInstaller其实就是把python解析器和你自己的脚本打包成一个可执行的文件,但是它不是跨编译的,也就是说在Windows下用PyInstaller生成的exe只能运行在Windows下,在Linux下生成的只能运行在Linux下. Pyinstaller的安装 直接使用pip install pyinstaller即可. 在windows下,pyinstaller需要PyWin32的支持.当用pip安装pyinstaller时未找到PyWin32,会自动安装pypiwin32. Py…
PyInstaller可以将Python程序打包成一个exe程序来独立运行,用户使用时只需要执行这个exe文件即可,不需要在机器上再安装Python及其他包就可运行了.另外,PyInstaller相较于其他打包程序,比如py2exe,大多时候使用起来更加方便,可以通过命令行的一些简单命令即可进行打包,当然,当你需要打包的程序比较大且复杂时,使用哪个打包程序可能差别都不会太大了,这时候就看个人的习惯和爱好了. pip安装PyInstaller:pip install pyinstaller pip…
以前在python环境下selenium 主要用的是chromdriver,这次发现老是报错(Timeout), 实际又是正确的, 可能是和chrome版本不正确,再加上我程序蹦来就在windows环境下. IE浏览器驱动下载链接:http://selenium-release.storage.googleapis.com/index.html,我这里安装的是v3.0(担心最新的有问题),运行代码发现成功. Firefox 浏览器下载链接:https://github.com/mozilla/g…
问题描述 使用pyinstaller打包使用Tkinter编写的控制台程序,出现报错 15793 INFO: Adding Microsoft.Windows.Common-Controls to dependent assemblies of final executable  required by d:\solftware\python3.7.3\python.exe16000 WARNING: lib not found: api-ms-win-crt-math-l1-1-0.dll d…
看介绍python语言时,说它是胶水语言,可以调用其他语言.通过使用ctypes模块就可以调用C语言的动态库.下面先放上官方文档和几个比较好的博文. 1.官方文档:http://python.net/crew/theller/ctypes/tutorial.html 2.Python调用windows下DLL详解 - ctypes库的使用: http://blog.csdn.net/magictong/article/details/3075478 3.聊聊Python ctypes 模块: h…
最近研究人脸识别,需要用python调用so动态库,涉及到c/c++中的指针字符串转Python的bytes对象的问题. 按照ctypes的文档,直观方式是先创建对应的类型数组,再将指针取地址一一赋值: from ctypes import *    p)() ): p[i] = i   b=bytes(bytearray(p)) print(b) from ctypes import * p=(c_char * 10)() for i in range(10): p[i] = i b=byte…
0X00 ctypes 是强大的,使用它我们就能够调 用动态链接库中函数,同时创建各种复杂的 C 数据类型和底层操作函数.使得python也具备了底层内存操作的能力,再配合python本身强大的表达能力,这才知道为什么python是黑客必学的编程语言. 0x01  ctypes使用 ctypes 提供了三种方法调用动态链接库:cdll(), windll(), 和 oledll(). 它们的不同之处就在 于,函数的调用方法和返回值.cdll() 加载的库,其导出的函数必须使用标准的 cdecl…
**通过**```pythonpyinstaller -F demo.py```**即可把demo.py打包成可独立运行的demo.exe** **pyinstaller在cmd使用格式:***pyinstaller -X demo.py*其中,-X为下列各后缀中的一种,demo是目录+文件名-F: 指定打包后只生成一个exe格式的文件-D:–onedir 创建一个目录,包含exe文件,但会依赖很多文件(默认选项)-c:–console, –nowindowed 使用控制台,无界面(默认)-w:…
安装 PYQT5 pypcap 环境: windows10_x64 python3.6.3 pycharm2017.2.4 备注: 需要安装 Visual C++ Build Tools 2015 可以解决 error: Microsoft Visual C++ 14.0 is required. Get it with "Microsoft Visual C++ Build Tools": http://landinghub.visualstudio.com/visual-cpp-b…
>>> import ctypes >>> from ctypes import * >>> dir(ctypes) ['ARRAY', 'ArgumentError', 'Array', 'BigEndianStructure', 'CDLL', 'CFUNCTYPE', ' DEFAULT_MODE', 'DllCanUnloadNow', 'DllGetClassObject', 'FormatError', 'GetLastEr ror', '…
原因:python是64位的python,而windll.LoadLibrary只能由32位的python使用 参考: 64位Python调用32位DLL方法(一) 解决方法:使用32位的python(切记版本不要太新,本人一开始使用最新的32位python3.7.2再次报错,换成python3.6成功运行) 我的方法是使用Anaconda创建了一个32位的python3.6(安装了这么久的conda第一次发挥作用,开心ing...,具体安装方法我之前也写了一篇,感兴趣的可以查看) Anacon…
C的代码 void test_cref(char *a, int *b, char *data) { , sizeof(char)); strcpy(p, "cute"); a[] = p[]; *b = ; data = a; wtk_debug("%s %d %s\n", a, *b, data); } 打包成动态库之后 from ctypes import * libc = cdll.LoadLibrary("./libwtkdlg.so"…
1.申请前内存占用情况 2.申请内存 from ctypes import * import time #在这里申请1G的内存,单位k mem = create_string_buffer(1024*1024*1024) time.sleep(10) #释放内存 mem= None 3.申请后内存占用情况 4.释放内存后的内存占用情况…
1 - Pyinstaller简介 Home-page: http://www.pyinstaller.org PyInstaller是一个能够在多系统平台(Windows.*NIX.Mac OS)上将Python程序冻结(打包)为独立可执行文件的工具. 可以捆绑所需的第三方库,并可与绝大多数常见的库和框架配合使用: 可以与Python2.7和3.3-3.6协同工作,由于透明压缩而构建了更小的可执行文件: 使用OS支持来加载动态库,从而确保完全兼容: 2 - Pyinstaller安装 $ pi…
使用pyinstaller打包有个好处就是所有依赖都打包进去了,可以随意把文件移动到别的电脑上使用 安装 pip install pyinstaller 新建一个demo.py文件 #!/usr/bin/python3 # -*- coding: utf-8 -*- print("hello world") 打开cmd或powershell PS D:\build> pyinstaller.exe -F -c .\demo.py INFO: PyInstaller: INFO:…
需求分析: python脚本如果在没有安装python的机器上不能运行,所以将脚本打包成exe文件,降低脚本对环境的依赖性,同时运行更加迅速. 当然打包的脚本似乎不是在所有的win平台下都能使用,win7有一部分不能使用,我在win10能够很好的运行. 准备: pyinstaller (http://www.pyinstaller.org) 首先还是去官网看支持的python版本,不然会很尴尬的. 安装: 需要安装pyinstaller和pywin32 使用以下命令将会自动安装两个包,在cmd用…
Python 在 ctypes 中为我们提供了类似C语言的数据类型, 它的用途(我理解的)可能是: (1) 与 其他语言(如 C.Delphi 等)写的动态连接库DLL 进行交换数据,因为 python 的 数据与 DLL难以进行数据交换. (2) python 的字符串一旦形成,是不可变的,为了算法的需要,我们有时需要对字符串进行原位操作 ( in place ),而不想浪费另外的内存空间. (3) python 具有很简明的语法,人们乐于使用.在解决实际问题时,字符串的处理占据了很大的开发量…
Python 和 C 的混合编程工具有很多,这里介绍 Python 标准库自带的 ctypes 模块的使用方法. 初识 Python 的 ctypes 要使用 C 函数,需要先将 C 编译成动态链接库的形式,即 Windows 下的 .dll 文件,或者 Linux 下的 .so 文件.先来看一下 ctypes 怎么使用 C 标准库. Windows 系统下的 C 标准库动态链接文件为 msvcrt.dll (一般在目录 C:\Windows\System32 和 C:\Windows\SysW…
近几天使用 python 与 c/c++ 程序交互,网上有推荐swig但效果都不理想,所以琢磨琢磨了 python 的 ctypes 模块.同时,虽然网上有这方面的内容,但是感觉还是没说清楚.这里记录下来做备用,同时也给广大 python with c/c++ 派留给方便.如果你觉得我写的不好,可以参考官方文档里对 ctypes 的介绍,那里说不一定有你想要的. 如有错误,请指正:). 测试环境: win 8.1,   Visual Studio 2010,   Python 3.5 一.介绍…