当前位置: 首页 > 面试题库 >

Python-使用PyInstaller捆绑数据文件(--onefile)

祝宏放
2023-03-14
问题内容

我正在尝试使用PyInstaller构建一个包含文件和图标的单文件EXE。我一生无法忍受--onefile

如果我这样做了,--onedir那么一切都很好。当我使用时--onefile,它(在运行编译的EXE时)找不到引用的其他文件。它找到DLL和其他所有东西,只是找不到两个映像。

我查看了运行EXE时生成的temp-dir(\Temp\_MEI95642\例如),并且文件确实在其中。当我将EXE放到该临时目录中时,它会找到它们。很困惑。

这就是我添加到.spec文件中的内容

a.datas += [('images/icon.ico', 'D:\\[workspace]\\App\\src\\images\\icon.ico',  'DATA'),
('images/loaderani.gif','D:\\[workspace]\\App\\src\\images\\loaderani.gif','DATA')]  

我还要补充一点,我也尝试过不要将它们放在子文件夹中,也没有什么不同。

编辑: 由于PyInstaller更新,将较新的答案标记为正确。


问题答案:

较新版本的PyInstaller不再设置该env变量,因此Shish的出色答案将不起作用。现在,路径设置为sys._MEIPASS

def resource_path(relative_path):
    """ Get absolute path to resource, works for dev and for PyInstaller """
    try:
        # PyInstaller creates a temp folder and stores path in _MEIPASS
        base_path = sys._MEIPASS
    except Exception:
        base_path = os.path.abspath(".")

    return os.path.join(base_path, relative_path)


 类似资料:
  • 问题内容: 因此,现在我正在使用一个原型,其中我们将webpack(用于构建.tsx文件和复制.html文件)与webpack-dev- server之间的组合用于开发服务。您可以假设我们也将React和ReactDOM用作两个库依赖项。我们当前的构建输出是以下结构: 这会将所有模块(包括库相关性放入大捆绑文件中)放置。我希望最终结果如下所示: 我在index.html和.tsx文件的import

  • 我试图添加一个图像到一个文件的PyInster产生。我读过很多问题/论坛,比如这个和那个,但仍然不起作用。 我知道对于一个文件操作,Pyinstller会产生一个临时文件夹,可以通过.然而,我不知道在我的脚本中应该在哪里添加这个. 请显示以下内容: 1-在哪里和如何应该添加?在python脚本中,还是在规范文件中? 2-要使用的确切命令是什么?我试过了 或 然后添加('myImag.png','i

  • 我们在Karaf 4.0.3和多个由pax jdbc config加载。例如,为不同的数据库配置了两个数据源: 我的问题是捆绑模块B应该使用datasourceB。它被配置为在所有源文件和blueprint中使用datasourceB。xml 我真的不明白,karaf捆绑包使用不同的数据源有多容易。 当datasourceA配置文件被删除时,则MODULE B正确使用datasourceB。 这个

  • 问题内容: 我对mvc4捆绑器有一个奇怪的问题,不包括扩展名为.min.js的文件 在我的BundleConfig类中,我声明 我认为 当它渲染时,它只会渲染 如果我将jquery.tmpl.min.js重命名为jquery.tmpl.js(并相应地更新捆绑软件中的路径),则两个脚本均正确呈现。 是否有一些配置设置导致其忽略“ .min.js”文件? 问题答案: 我最初发布的解决方案是有问题的(很

  • 我有一个节点。js应用程序,所有模块都是用CommonJS编写的,有些模块使用es6功能,如Generator、let、const等,这些都可以正常工作。 我想把所有这些文件打包成一个文件,然后再把它弄丑。我对必要步骤的最佳猜测是:1)将所有模块转换为es6模块-使用Babel 2)使用rollup创建捆绑包并将其输出为CJS文件。3) 丑陋的CJS文件。 我玩过rollup