python4delphi 使用
=================================
Delphi + Python的特点
=================================
Delphi GUI方面还是很强, 但第3方类库太缺了.
Python正好相反, pypi的类库太丰富了. 两者结合在一起, 简直是取长补短的典范.
=================================
使用 python4delphi 的开发设置
=================================
----------------------------
Step1. 安装 python2.7 和 python4delphi VCL.
----------------------------
安装python27: 下载并安装 python2.7 for windows版. python27 安装后, 在c:\WINDOWS\system32就有了 python27.dll.
安装python4delphi: svn下载最新版的 python4delphi, http://code.google.com/p/python4delphi, 该版本已经支持 python2.7 和python3.3了. 不要从http://membres.multimania.fr/marat/delphi/python.htm 下载Python4Delphi 的installer, 它最高仅支持python 2.3.
----------------------------
Step2. 将 P4D 的定义文件加到 project.dpr
----------------------------
在Delphi project.dpr, 在uses之前,加上{$I Definition.Inc}
----------------------------
Step3. 使用pythonengince 等组件
----------------------------
设置 pythonengince 组件的属性.
UseLastKnownVersion=False
DLLName='python27'
DllPath= 'c:\WINDOWS\system32'
----------------------------
Step4. 发布应用前, 需解决run as administrator问题,
----------------------------
(a) 需要 Microsoft.VC90.CRT 和 Microsoft.Windows.Common-Controls 信息作为资源加到delphi project中, 否则加载python的 c-extensions 模块会报错.
(b)创建 XP_UAC.manifest 文件, 内容见后.
(c)创建 XP_UAC.rc 文件, 内容:
1 24 XP_UAC.manifest
其中: 1-代表资源编号, 24-资源类型为 RTMAINIFEST , UAC.manifest为manifest文件名称
(d)使用delphi的brcc32将 XP_UAC.rc编译成 XP_UAC.res
命令: brcc32 XP_UAC.rc
(e)在Delphi project.dpr 源码
(1)在{$R *.res} 后, 加上 {$R XP_UAC.res}
=================================
部署python4delphi的应用程序
=================================
方式1. 和开发一样, 老老实实安装python以及python的第3方包, 然后你的delphi程序应该就能使用.
方式2. 像dreampie, 将python环境打包, 连同exe一起发布. 有专门的py2exe,cx_freeze等制作工具.
=================================
XP_UAC.manifest 的内容
=================================
C:\WINDOWS\WinSxS 目录查找 Windows.Common-Controls 和 Microsoft.VC90.CRT, 如果能找到并且version一致, 只需修改 PyScripter 名字. 如果没有找到这两个文件, 需要到微软官网下载 Microsoft Visual C++ 2008 Redistributable Package, 并对比版本号和publicKeyToken.
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity
version="1.0.0.0"
processorArchitecture="*"
name="PyScripter"
type="win32"/>
<dependency>
<dependentAssembly>
<assemblyIdentity
type="win32"
name="Microsoft.Windows.Common-Controls"
version="6.0.0.0"
processorArchitecture="*"
publicKeyToken="6595b64144ccf1df"
language="*"/>
</dependentAssembly>
</dependency>
<dependency>
<dependentAssembly>
<assemblyIdentity
type="win32"
name="Microsoft.VC90.CRT"
version="9.0.21022.8"
processorArchitecture="x86"
publicKeyToken="1fc8b3b9a1e18e3b"
language="*"/>
</dependentAssembly>
</dependency>
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
<security>
<requestedPrivileges>
<requestedExecutionLevel level="asInvoker"/>
</requestedPrivileges>
</security>
</trustInfo>
<asmv3:application>
<asmv3:windowsSettings xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">
<dpiAware>true</dpiAware>
</asmv3:windowsSettings>
</asmv3:application>
</assembly>
=================================
关于PYTHONPATH的设置
=================================
关于PYTHONPATH的设置, 可在 TPythonEngine.OnSysPathInit 事件中, 将我们自己的path加到 PythonPATH 中.
如果代码中没有加, 我们需要修改注册表, 位置是 HKEY_LOCAL_MACHINE\SOFTWARE\Python\PythonCore\2.7\PythonPath, 将我们的path加进去.
注意: TPythonEngine.OnPathInitialization 事件, 只有在注册表没有定义 PythonPath 才有用, 所以不推荐使用.
=================================
python4delphi 资料汇总
=================================
python4delphi 最新源码
http://code.google.com/p/python4delphi/
Using P4D with Python 2.6, 3.0
http://code.google.com/p/python4delphi/wiki/P4DPython26
在Python 2.6, 3.0下使用P4D
http://www.cnblogs.com/babykick/archive/2011/03/25/1995970.html
Andy tips on python4delphi
http://www.atug.com/andypatterns/pythonDelphiTalk.htm
使用P4D 编写Python Extension
http://1000copy.itpub.net/post/10379/276310
Python For Delphi---更好地协同
http://www.cnblogs.com/GarfieldTom/archive/2013/01/14/2860206.html
python4delphi 使用的更多相关文章
- python4delphi 安装
环境搭建: 目前p4d已经可以支持到XE7,可惜googlecode即将关闭,不知道作者是否会在github上继续更新. 因为此开源项目历史较久远,拿到源代码后可能还需要手动修改相关的文件引用,毕竟需 ...
- python4delphi import lxml pandas 出错的小结
环境: 1.win10 64位 2.delphi xe8 3.python2.7 4.python4delphi (svn 2015-03-21 发布的83版本号) 5.lxml 3.4.4(通过p ...
- Python4Delphi也是与VCL密切相关,所以才能相互调用,绝对有研究价值!
Python4Delphi也是与VCL密切相关,所以才能相互调用,绝对有研究价值! http://www.cnblogs.com/GarfieldTom/archive/2013/01/17/2864 ...
- python4delphi 设置syspath
详细看demo25的代码 These techniques are demonstrated in Demo25 in the examples folder of your Python for D ...
- python4delphi Python could not be properly initialized. We must quit.
要用32位的DLL,不要用64位的dll Unable to load Python 2.7 dll with Delphi 2010 #6 Closed GoogleCodeExporter op ...
- 最想做的三个Delphi项目:Paint,IM,SQL,另外还有Smart,TMS,FMX,UML,FreePascal,Python4Delphi,Cheat Engine
都是绝美项目- 如果有时间,要做的项目:0. 整整5个Cloud项目(可带来商业收益,其中还包括手机发送, S/D/N/L/NetDriver)1. Heidi/front/SQLITE STUDIO ...
- 调用python 报R6034 错误
R6034 指的是:"An application has made an attempt to load the C runtime library incorrectly. Please ...
随机推荐
- GitHub和SourceTree入门教程
-->本教程适用于主流的开源网站github和bitbucket,个人认为sourceTree还是比较好用的git客户端,支持windows和mac os. -->soureceTree的 ...
- codevs1183泥泞的道路
题意:给定一张有向稠密图和通过每条边的时间和路程,问从1到n的路程/时间 最大为多少 正解:SPFA+二分答案 开始做的时候,想直接跑图论,后来发现好像不对(不然数据范围怎么这么小) 但是显然要用到图 ...
- CommonJS/AMD/CMD/UMD概念初探
1.CommonJS是一种规范,NodeJS是这种规范的实现. 1.1.CommonJS 加载模块是同步的,所以只有加载完成才能执行后面的操作. 参考: http://www.commonjs.org ...
- 环信Restfull API dotnetSDK
Easemob.Restfull4Net 环信Restfull API dotnet的封装 支持的.Net Framework版本:4.0 API地址:http://docs.easemob.com/ ...
- Bzoj2434 [Noi2011]阿狸的打字机
Time Limit: 10 Sec Memory Limit: 256 MBSubmit: 2536 Solved: 1415 Description 阿狸喜欢收藏各种稀奇古怪的东西,最近他淘到 ...
- POJ 1365 Prime Land(数论)
题目链接: 传送门 Prime Land Time Limit: 1000MS Memory Limit: 10000K Description Everybody in the Prime ...
- 数据结构与算法分析–Minimum Spanning Tree(最小生成树)
给定一个无向图,如果他的某个子图中,任意两个顶点都能互相连通并且是一棵树,那么这棵树就叫做生成树(spanning tree). 如果边上有权值,那么使得边权和最小的生成树叫做最小生成树(MST,Mi ...
- POJ3254Corn Fields(状态压缩DP入门)
题目链接 题意:一个矩阵里有很多格子,每个格子有两种状态,可以放牧和不可以放牧,可以放牧用1表示,否则用0表示,在这块牧场放牛,要求两个相邻的方格不能同时放牛,即牛与牛不能相邻.问有多少种放牛方案(一 ...
- mybatis报错Mapped Statements collection does not contain value for com.inter.IOper
首页 > 精品文库 > mybatis报错Mapped Statements collection does not contain value for com.inter.IOper m ...
- CSS3-实现单选框radio的小动画
在微信上看到一个教程文,觉得制作的小动画还是很有意思的,自己也试验了一下.一开始动画怎么都不执行(我用的HB),因为内置浏览器对css3的不兼容.加上各种浏览器前缀后就好了.但是旋转那个效果,在HB里 ...