【问题标题】:Pyinstaller can't find .js file when building the applicationPyinstaller 在构建应用程序时找不到 .js 文件
【发布时间】:2022-02-17 00:09:59
【问题描述】:

我一直在使用 pyinstaller 创建使用 mne 包进行 EEG 信号分析的 Mac 应用程序。在最近一次更新 mne 之前,一切正常。

但是,现在在构建我的应用程序的过程中,我遇到了错误,

No such file or directory: 
'/dist/MyApp.app/Contents/MacOS/mne/report/js_and_css/report.js'

当我尝试从命令行运行 unix 可执行文件时,错误仍然存​​在。我可以在 mne 模块目录中看到report.js,并且我尝试修改我的.spec 文件,以便pathex 包含包含report.js'的目录:

'/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/mne/report/js_and_css/report.js'

但是,这并不能解决问题。如何让 pyinstaller 在构建过程中找到report.js 的位置?

【问题讨论】:

    标签: python pyinstaller


    【解决方案1】:

    我可能有同样的问题。我必须添加完整的 mne 目录才能使其正常工作(这可能不是最好的选择......)。

    我关注了doc to use the pyinstaller spec file。我修改了规范文件:

    a = Analysis(['main.py'],
                 [...]
                 datas=[], # HERE
                 [...])
    

    a = Analysis(['main.py'],
                 [...]
                 datas=[("path/to/venv/Lib/site-packages/mne", "mne")], # HERE
                 [...])
    

    如果您不在 venv 中工作,您可能需要调整路径。

    注意
    好像是Including a directory using Pyinstaller的其他方式。我没有尝试过,但我可以看出使用规范文件有效。
    编辑:我尝试使用选项 --add-data="relative/path/to/mne;mne",它就像一个魅力。

    注意 2
    这个答案是一种解决方法,而不是解决方案。我猜mne 应该正确导入而不使用此解决方法,但我不知道更多。

    【讨论】:

    • @ethttps://stackoverflow.com/users/6488052/etiennedm collect_data_files 最终成为我收集所有需要的数据文件的有效方式:from PyInstaller.utils.hooks import collect_data_files data=collect_data_files('mne') 现在,其他数据可以附加到上面,结果可以包含在Analysis 实例中。
    【解决方案2】:

    @ethttps://stackoverflow.com/users/6488052/etiennedm

    collect_data_files 最终成为我收集所有需要的数据文件的有效方式:

    from PyInstaller.utils.hooks import collect_data_files
    data=collect_data_files('mne')
    

    现在,可以将其他数据附加到上面,结果可以包含在Analysis 实例中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-30
      • 1970-01-01
      • 2015-01-14
      • 2018-06-08
      相关资源
      最近更新 更多