【问题标题】:.exe Icon Doesn't Change [py2exe].exe 图标不变 [py2exe]
【发布时间】:2015-05-14 11:51:30
【问题描述】:

我的图标文件 myicon.ico 与 setup.py 位于同一目录中。当我运行 py2exe 时,myproject.exe 没有图标。我正在寻找解决方案,但找不到。

setup.py 代码为:

from distutils.core import setup
import py2exe

setup(
   windows=[{
         "script": "myproject.py",
         "icon_resources": [(0, "favicon.ico")],
      }]
)

操作系统:Win8.1 64位

【问题讨论】:

  • 上次我遇到了这样的问题(很久以前,32 位),我最终使用外部工具来更改图标。在安装程序中创建链接并更改链接本身而不是可执行文件上的图标的额外要点。

标签: python python-2.7 icons py2exe


【解决方案1】:

请试试这个

from distutils.core import setup

setup(
    options = {'py2exe': {'bundle_files': 1}},
    zipfile = None,
    windows = [{
            "script":"myproject.py",
            "icon_resources": [(1, "favicon.ico")],
            }],
)

【讨论】:

  • 当我尝试这个时,它说“win64 尚不支持bundle-files 1”。如果我删除“options = {'py2exe': {'bundle_files': 1}}”,图标不会改变。如果我使用 32 位系统能够使用 bundle_files:1,它是否适用于 64 位系统?或者你有其他推荐吗?感谢您的回答。
  • 我在 64 岁时遇到过同样的问题。但我忘记了。我会在我的旧项目代码中找到它。您可以投票支持 32 位窗口。
  • 我刚刚尝试了32位系统的代码,它没有任何bundle_files:1问题但图标没有改变!问题可能与图标文件有关吗?我尝试了 256x256 和 64x64 .ico 图像。
【解决方案2】:

我就是这样处理我的问题的;

  1. 我使用了我在问题中发布的上述代码。
  2. 然后我安装了Resourch Hacker程序。
  3. 我用 Resourch Hacker 程序打开了 myprogram.exe 文件。
  4. 然后操作 > 替换图标 > 我选择了我想要的图标。
  5. 没关系!

资源黑客教程CLICK THIS

【讨论】:

  • 即使我找到了解决方案,如果有人知道直接通过py2exe来做会更好。
【解决方案3】:

我遇到了同样的问题。我已经通过从http://www.iconarchive.com/search?q=windows+7&page=5下载了一个win7图标解决了,原因应该是一开始无法使用的图标文件不是正确的win7格式图标。

这个网页https://www.creativefreedom.co.uk/icon-designers-blog/windows-7-icon-sizes/告诉我们一个主题“测试你的Windows 7图标”来检查一个图标是否真的是一个win7图标。

【讨论】:

    【解决方案4】:

    py2exe 似乎有a 4-year-old bug on handling icons,但由于它的描述,我设法解决了这个问题:

    setup_dict = dict(
        windows = [{'script': "script.py",
                    "icon_resources": [(1, "icon.ico")}],
    )
    
    setup(**setup_dict)
    setup(**setup_dict)
    

    这几乎将项目构建了两次。如果你的项目很复杂,通过 py2exe 处理时间太长,你可以使用它来构建一个虚拟 py 文件:

    import tempfile
    tf = tempfile.NamedTemporaryFile(delete=False)
    tf.close()
    setup(
        windows = [{
            'script': tf.name,
            "icon_resources":[(1, "icon.ico")]}]
    )
    os.remove(tf.name)
    

    请不要忘记像您的项目一样设置排除项,否则您的dist 文件夹中会堆满不需要的文件。

    【讨论】:

    • 这对我有用。第一次调用setup() 不会生成图标,但所有后续调用都会生成。因此,第一次调用setup() 时需要使用虚拟.py 文件。 here也报告了类似的解决方案。
    • 太棒了!这解决了我的问题。嵌入的图标文件不会在 48x48 层之上渲染,但现在可以了。
    【解决方案5】:

    我使用了不同的程序,遇到了 pyinstaller from this post 第一次就成功了。

    安装它:

    pip install pyinstaller
    

    编译我的程序:

    pyinstaller myprogram.py -i icon.ico
    

    第一次工作!希望对您有所帮助。

    【讨论】:

      猜你喜欢
      • 2012-03-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-02
      • 2023-04-01
      • 2010-10-06
      • 1970-01-01
      • 2017-08-10
      相关资源
      最近更新 更多