当前位置: 首页 > news >正文

pytorch使用pyinstaller编译报错:找不到源代码

pytorch使用pyinstaller编译报错:找不到源代码

错误:PyInstaller OsError: Can’t get source code TorchScript

参考来源: https://github.com/pyinstaller/pyinstaller/issues/5673

对于那些遇到同样错误的人,我不得不使用一些技巧来使其正常工作。我将尝试为此提供指南。
请注意,前两个步骤不起作用。所以你可能想直接进入第 3 步。

解决方案指南
我做的第一件事就是修改我的.spec文件以包含这个来获取torch源代码:

def collect_source_files(modules):datas = []for module in modules:source = inspect.getsourcefile(module)dest = f"src.{module.__name__}"  # use "src." prefixdatas.append((source, dest))return datassource_files = collect_source_files([torch])  # return same structure as `collect_data_files()`
source_files_toc = TOC((name, path, 'DATA') for path, name in source_files)
# ...
# your Analysis settings untouched
# ...
pyz = PYZ(a.pure, a.zipped_data, source_files_toc, cipher=block_cipher)
# rest of the file
# ...

然后修改FrozenImporterpyimod03_importers.py)为:

class FrozenImporter(object):`...def get_source(self, fullname):"""Method should return the source code for the module as a string.But frozen modules does not contain source code.Return None."""if fullname in self.toc:sourcename = f"src.{fullname}"if sourcename in self.toc:return self._pyz_archive.extract(sourcename)[1].decode("utf-8")return Noneelse:# ImportError should be raised if module not found.raise ImportError('No module named ' + fullname)

为了做到这一点,我必须

  1. git clone https://github.com/pyinstaller/pyinstaller.git
  2. 更改文件pyinstaller/PyInstaller/loader/pyimod03_importers.py以包含上述源代码。
  3. 运行pip install -e ./pyinstaller。现在我有了 Pyinstaller 的更新版本。但这给了我同样的错误。
  4. 我从 PyTorch 问题板上的这篇文章中发现, @torch.jit.scipttransformers 模块中函数(原始错误消息中输出的函数)的注释transformers/models/deberta/modeling_deberta.py存在c2p_dynamic_expand问题,必须将其更改为。@torch.jit._script_if_tracing所以我照做了。我按照与步骤 2 中对 PyInstaller 所做的类似方式执行了此操作FrozenImporter
    git clone https://github.com/huggingface/transormers.git
  5. 更改函数c2p_dynamic_expandtransformers/transformers/deberta/modeling_deberta.py使用新的@torch.jit._script_if_tracing注释。
  6. root 身份运行pip install -e ./transformer。现在我有了 transformer 的更新版本,错误也消失了。

http://www.mrgr.cn/news/64290.html

相关文章:

  • 【P2-2】ESP8266 WIFI模块在STA模式下作为TCP客户端与电脑/手机网络助手(TCP服务端)通信——TCP数据透传
  • AOP实现参数校验的一些问题【代码贴在最后】
  • 电脑软件:推荐一款免费且实用的电脑开关机小工具
  • 【项目分享】法拉利中控台模拟 html+css+js
  • 【前端基础】CSS进阶
  • Oracle OCP认证考试考点详解082系列08
  • 轻松理解操作系统 - Linux 文件系统的心脏是什么?
  • 分享一下面试中常用的10 个面试点全解析,面试成功的秘诀
  • go语言回调函数的使用
  • 抓包sslpinning绕过
  • 代码随想录第十八天
  • C语言之写一个修改数组内容的函数
  • 优化外贸管理 解锁全球业务流畅双效
  • 原子操作(atomic operation)
  • Kotlin协程suspend的理解
  • 【JavaEE初阶】网络原理(4)
  • Linux云计算 |【第五阶段】CLOUD-DAY10
  • 国产操作系统卖疯了!最营收7.84亿,最低1.5亿
  • 每日OJ题_牛客_排序子序列_模拟_C++_Java
  • 2022美亚杯复现(部分)
  • 【系统架构设计师】2024年上半年真题论文: 论模型驱动架构设计方法及其应用(包括解题思路和素材)
  • 034_Structural_Transient_In_Matlab结构动力学问题求解
  • 学习GCC
  • 速通一些常见的神经网络
  • 高德地图如何标注店铺名称和位置信息?
  • vue中的nextTick() - 2024最新版前端秋招面试短期突击面试题【100道】