zoukankan      html  css  js  c++  java
  • python4delphi 安装

    环境搭建:

    目前p4d已经可以支持到XE7,可惜googlecode即将关闭,不知道作者是否会在github上继续更新。

    因为此开源项目历史较久远,拿到源代码后可能还需要手动修改相关的文件引用,毕竟需要兼顾低版本的delphi。

    step1.安装 python4delphi

    1、首先是组件安装,打开对应版本的Python_??.dpk ,编译修改引用,XE后很多单元带VCL 和FMX的前缀了,需要手工指定,

         编译成功后,选择release模式下 安装

    2、在我们的项目中添加搜索路径:xxxxxpython4delphiComponentsSourcesCore

    3、在系统盘中的system32或者sysWOW64中找到python27.dll放在程序输出目录中

    Step2.  将 P4D 的定义文件加到 project.dpr
    ----------------------------
    在Delphi project.dpr, 在uses之前,加上{$I Definition.Inc}
    ----------------------------
    Step3. 使用pythonengince 等组件
    ----------------------------
    设置 pythonengince 组件的属性.
       UseLastKnownVersion=False
       DLLName='python27'
       DllPath= 'c:WINDOWSsystem32'   
    ----------------------------
    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:WINDOWSWinSxS 目录查找 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_MACHINESOFTWAREPythonPythonCore2.7PythonPath, 将我们的path加进去.
    注意: TPythonEngine.OnPathInitialization 事件, 只有在注册表没有定义 PythonPath 才有用, 所以不推荐使用.

  • 相关阅读:
    toj 2819 Travel
    toj 2807 Number Sort
    zoj 2818 Prairie dogs IV
    zoj 1276 Optimal Array Multiplication Sequence
    toj 2802 Tom's Game
    toj 2798 Farey Sequence
    toj 2815 Searching Problem
    toj 2806 Replace Words
    toj 2794 Bus
    css截取字符
  • 原文地址:https://www.cnblogs.com/h2zZhou/p/4761023.html
Copyright © 2011-2022 走看看