1

我用谷歌搜索了我的问题,它把我带到了这里:Bundling data files with PyInstaller (--onefile)

所以我添加了接受的答案的代码,

def resource_path(relative):
    return os.path.join(
        os.environ.get(
            "_MEIPASS2",
            os.path.abspath(".")
        ),
        relative
    )


# in development
>>> resource_path("app_icon.ico")
"/home/shish/src/my_app/app_icon.ico"

# in deployment
>>> resource_path("app_icon.ico")
"/tmp/_MEI34121/app_icon.ico"

但我仍然收到cannot locate imageName错误消息。除了它列出了_MEIPASS文件夹之外。

有什么我想念的吗?

如果需要更多信息,请告诉我。就我而言,pyinstaller是黑魔法,所以我不确定什么是相关信息。

4

1 回答 1

0

我也被困在了这一步。然后我阅读了 pyinstaller.py 文件并以某种方式成功解决了它。通过添加 resource_path() 方法修改源文件后(正如您已经完成的那样),您必须执行以下步骤:

  1. 跑:

    python utils\Makespec.py --onefile your_script_name.py 
    
  2. 接下来从第一步创建的 your_script_name 文件夹中编辑 your_script_name.spec 文件。添加这些行(调整您的图像名称)

    a.datas +=  [('relative path from pyinstaller folder','actual path to image file','DATA')]
    

    例如像这样,

    a.datas += [('calvin.jpg','C:\\projects\\python\\calvin.jpg','DATA')] 
    

    注意:当我将图像放在子文件夹中时,我无法使其工作,因此我将它们保存在 pyinstaller 文件夹本身中。

  3. 然后最后运行这个:

    python pyinstaller.py your_script_name\your_script_name.spec
    

    即使用您在第二步中编辑的 .spec 文件运行 pyinstaller。

希望这有助于消除您的所有疑虑:)

于 2013-06-05T06:27:04.480 回答