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 才有用, 所以不推荐使用.

  • 相关阅读:
    关于 No buffer space available (maximum connections reached?): connect 的处理
    Cron 表达式
    Hudson 打包部署到Was上特别慢
    JAVA jar 参数
    CentOS 6 UNEXPECTED INCONSISTENCY RUN fsck MANUALLY
    SSH 连接很慢
    解决libc.so.6: version `GLIBC_2.14&#39; not found问题
    Maven 基本参数
    Shc 应用
    JAVA 关于JNI本地库加载
  • 原文地址:https://www.cnblogs.com/h2zZhou/p/4761023.html
Copyright © 2011-2022 走看看