首页 > Python > Python2.6 py2exe打包程序提示应用程序配置不正确

Python2.6 py2exe打包程序提示应用程序配置不正确

为了方便没有安装Python的电脑运行Python脚本,可以使用py2exe这个工具对Python脚本进行打包最终得到一个exe文件。但Python 2.6下打包之后的EXE在别的电脑上竟然跑不起来,就和VS2008 SP1写的Win32 Console程序在别的电脑上跑不起来一样,提示“由于应用程序配置不正确,应用程序未能启动。重新安装应用程序可能会纠正这个问题。”

使用Depends查看打包后的EXE文件,发现找不到MSVCR90.DLL。于是我去Visual Studio 2008的安装目录下copy了一份过来(C:\Program Files\Microsoft Visual Studio 9.0\VC\redist\x86\Microsoft.VC90.CRT),但是仍然无法解决问题。

最后去网上找,发现是我的msvcr90.dll版本不一致。py2exe打包的程序需要9.0.21022.8这个版本号的MSVCR90.DLL。不过要找到这个DLL并不是难事,在C:\Program Files搜一下就是了,正好发现暴风的目录下存在这个DLL。
Python2.6 py2exe打包程序提示应用程序配置不正确
除了9.0.21022.8这个版本号的MSVCR90.DLL之外,我们还需要一个Microsoft.VC90.CRT.manifest文件放在同一目录下:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<noInheritable></noInheritable>
<assemblyIdentity type="win32" name="Microsoft.VC90.CRT" version="9.0.21022.8" processorArchitecture="x86" publicKeyToken="1fc8b3b9a1e18e3b"></assemblyIdentity>
<file name="msvcr90.dll"/>
</assembly>

之后运行py2exe打包后的exe文件就没问题了。


觉得文章还不错?点击此处对作者进行打赏!


本文地址: 程序人生 >> Python2.6 py2exe打包程序提示应用程序配置不正确
作者:代码疯子(Wins0n) 本站内容如无声明均属原创,转载请保留作者信息与原文链接,谢谢!


更多



分类: Python 标签: , ,
  1. 2012年3月3日09:47 | #1

    还从来没用过py2exe,不过这个打包是不是把那个dll一起打进去就行了?

    [回复]

    代码疯子 回复:

    @胡阳, 我目前对py2exe了解的还不多。不过就我所知道的,py2exe对py进行打包之后会产生两个exe文件,也比较大,一般合起来有5M。
    至于本文所说的dll,是VC运行库而已,好像只有Python 2.6有这个问题

    [回复]

  2. 2012年3月3日11:42 | #2

    其他程序的dll可以相互用?

    [回复]

    代码疯子 回复:

    @tl3shi, 不是其他程序的DLL。这个DLL是微软发行的。

    [回复]

    tl3shi 回复:

    @代码疯子, 哦。这样嗦。咦,咋没收到你的邮件回复?。。p.s 你的赞助商链接是哪滴,都是凡客礼品卡啥啥,
    每月多少呀?

    [回复]

    代码疯子 回复:

    @tl3shi, 猎户星的,你去wordpress论坛可以找到他,价格的话不高。

    [回复]

  3. 2012年3月3日12:27 | #3

    记得好像Python的安装目录下有VC动态库。

    [回复]

    代码疯子 回复:

    @波波, 我找了下 没看到这个动态库

    [回复]

    gewala 回复:

    @代码疯子, 我用的是Python2.7.1 在安装目录下就有msvcr90.dll,版本是9.0.21022.8,都是Python自带的
    不可能少的,否则Python根本运行不起来 [em010]

    [回复]

    代码疯子 回复:

    @gewala, 我这里在Python安装目录下的确找不到这个DLL。但是C:\Windows\winsxs下能找到对应版本的DLL。也许这样才能运行起来的缘故吧。
    py2exe的官网还告诉你去Visual Studio下面去找,所以2.6目录下没有这个DLL很正常。

    [回复]

    gewala 回复:

    @代码疯子, 哦,我现在就在用py2exe打包,把参数bundle_files设成1就可以打包成一个exe文件,很爽。 [em015]

    [回复]

  4. dzb3688
    2014年10月15日14:36 | #4

    下载这个补丁:http://download.microsoft.com/download/5/9/e/59e74271-2b59-49a1-b955-96b69cc34f38/vcredist_x86.exe

    安装好后,一切ok!

    [回复]