【问题标题】:exe generated from a python script with Py2exe does not work on xp使用 Py2exe 从 python 脚本生成的 exe 在 xp 上不起作用
【发布时间】:2014-10-11 15:54:00
【问题描述】:

我有一个可以在我的计算机上正常运行的 python 脚本(安装了 Python 2.7 32 位)。它有以下进口:

进口机械化 从 bs4 导入 BeautifulSoup 从 Tkinter 导入 * 导入json 导入浏览器

我想把它分发给其他人,所以我发现我们可以使用 py2exe 创建 exe 文件。我写了一个这样的脚本:

从 distutils.core 导入设置 导入py2exe 设置(控制台=['notification.py'], 选项= {'py2exe':{ 'packages' : ['bs4', 'mechanize', 'Tkinter', 'json', 'webbrowser'] }})

这在我的电脑上运行良好,但是当我在 Windows XP 上运行它时,我得到了这个错误 -

回溯(最近一次通话最后): 文件“notification.py”,第 3 行,在 文件“Tkinter.pyc”,第 38 行,在 文件“FixTk.pyc”,第 65 行,在 文件“_tkinter.pyc”,第 12 行,在 文件“_tkinter.pyc”,第 10 行,在 __load ImportError:DLL 加载失败:%1 不是有效的 Win32 应用程序。

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

【问题讨论】:

    标签: python tkinter py2exe


    【解决方案1】:

    也许 Tinkiter 是 64 位版本的 GUI,而您运行的 Windows XP 版本是 32 位。

    检查一下并告诉我们是否是这种情况。

    我认为这是这条线的原因:

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

    结合 Tinkiter 是 64 位的事实。

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

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

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

    编辑:添加了一个建议。

    【讨论】:

    • 我将不得不对我的代码进行大量更改,以防我不得不使用其他一些 GUI 应用程序。是的,我的 xp 是 32 位系统。有其他修复吗?哪个可以在windows和linux上运行?喜欢制作其他类型的独立游戏?
    • 其实这与 Linux 和 Windows 无关。它大约是您的 GUI 的 32 位版本和它的 64 位版本。如果 Linux 或 Windows 是 32 位,则必须使用 32 位软件。如果它是 64 位,那就没问题了。我不确定,但有 32 位版本的 Tkinter 吗?如果是,您应该使用该版本来构建您的应用程序,减少编辑。
    • 由于声誉限制,目前无法在您的答案下发表评论。所以我解决了你的案子对吗?它是关于安装 32 位和 64 位组件的。
    • 实际上是因为安装了 2 个版本的 python 而不是 Tkinter 的版本问题。我仍然会支持你的,因为它为我指明了正确的方向。谢谢你:)
    • 哦,你有两个 Python 版本!于是案子解决了。很高兴听您这么说。 :) 干杯伙伴。
    【解决方案2】:

    嗯,我已经在我的机器上安装了 Python 32 位和 64 位的两个版本。当我让它成为一个独立的时,可能一些 dll 是从错误的库中复制的。所以我完全卸载了这两个版本,然后安装了 32 位,它工作正常。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-05-21
      • 2023-04-01
      • 2017-09-01
      • 1970-01-01
      • 2020-11-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多