使用Py2exe从python脚本生成的exe在xp上不起作用

时间:2014-08-18 16:56:52

标签: python tkinter py2exe

我有一个python脚本在我的电脑上工作正常(安装了Python 2.7 32位)。它有以下导入:


    import mechanize
    from bs4 import BeautifulSoup
    from Tkinter import *
    import json
    import webbrowser

我想将此分发给其他人,因此我发现我们可以使用py2exe创建exe文件。我写了一个这样的剧本:


    from distutils.core import setup
    import py2exe

    setup(console=['notification.py'],
        options = {'py2exe' : {
            'packages' : ['bs4', 'mechanize','Tkinter', 'json', 'webbrowser']
        }})

这在我的计算机上工作正常但是当我在Windows XP上运行时,我收到此错误 -


    Traceback (most recent call last):
      File "notification.py", line 3, in 
      File "Tkinter.pyc", line 38, in 
      File "FixTk.pyc", line 65, in 
      File "_tkinter.pyc", line 12, in 
      File "_tkinter.pyc", line 10, in __load
    ImportError: DLL load failed: %1 is not a valid Win32 application.

我尝试搜索其他线程但发现没有相同的问题。所以请帮我解决这个问题。

2 个答案:

答案 0 :(得分:1)

也许Tinkiter是一个64位版本的GUI,而你运行它的Windows XP版本是32位。

检查出来并告诉我们是否属实。

原因我认为这是一行:

ImportError:DLL加载失败:%1不是有效的Win32应用程序。

结合Tinkiter是64位的事实。

Python可以是32位。适用于两种操作系统,32位和64位操作系统。 但是Tinkiter是一个GUI,与语言不同。 因此,将64位附加组件包含在32位应用程序中......可能会造成一些麻烦。 :)

建议: 您可以尽可能使应用程序在控制台界面中工作。 然后,您可以使用另一个可以32位运行的GUI。

例如,您可以获得32位版本的THIS

编辑:添加了建议。

答案 1 :(得分:1)

好吧,我在我的机器上安装了Python 32位和64位两个版本。当我把它变成一个独立的时候,可能有些dll是从错误的库中复制出来的。所以我完全卸载了两个版本,然后安装了32位,它工作正常。