使用Py2exe生成的Python脚本exe在XP上无法运行

0 投票
2 回答
623 浏览
提问于 2025-04-18 17:41

我有一个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 个回答

1

我在我的电脑上安装了32位和64位的Python两个版本。当我想把它变成独立运行的时候,可能从错误的库里复制了一些dll文件。所以我把这两个版本都完全卸载了,然后只安装了32位的,结果就正常工作了。

1

可能是因为Tinkiter是64位的图形界面,而你运行的Windows XP版本是32位的。

你可以检查一下,看看是不是这样。

我这么猜的原因是这行错误信息:

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

再加上Tinkiter是64位的这一点。

Python可以是32位的,能在32位和64位的操作系统上都能运行。但Tinkiter是一个图形界面,这和编程语言是不同的。

所以把一个64位的插件放到一个32位的应用程序里,可能会引发一些问题。:)

建议:
你可以先尝试让这个应用在控制台界面下运行,如果可以的话。
然后你可以使用另一个可以在32位下运行的图形界面。

比如,你可以下载一个32位版本的 这个

补充:添加了一个建议。

撰写回答