pyinstaller遇到错误OSError: Can‘t get source for <function batched_nms at 0x000002EB9D720B80>.

前言

使用pyinstaller将detectron2打包成exe后,调用detectron2的导出TorchScript模型出现错误。次错误是继上一次错误pyinstaller打包错误:OSError: Can‘t get source for <function sigmoid_focal_loss at 0x00000174BE600F70>.之后出现的第二个错误
环境:
System:Windows10
Pytorch:1.8.1
Detectron2:0.6
CUDA:11.1

错误信息

在这里插入图片描述

Traceback (most recent call last):
  File "torch\_utils_internal.py", line 55, in get_source_lines_and_file
  File "inspect.py", line 979, in getsourcelines
  File "inspect.py", line 798, in findsource
OSError: could not get source code

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "main.py", line 35, in <module>
  File "<frozen importlib._bootstrap>", line 991, in _find_and_load
  File "<frozen importlib._bootstrap>", line 975, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 671, in _load_unlocked
  File "PyInstaller\loader\pyimod02_importers.py", line 499, in exec_module
  File "my01\utils\my01_get_train_record.py", line 5, in <module>
  File "<frozen importlib._bootstrap>", line 991, in _find_and_load
  File "<frozen importlib._bootstrap>", line 975, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
这个错误通常是由于pyinstaller打包时没有正确处理文件编码格式所致。解决方法如下: 1.在.spec文件中添加以下代码: ```python import os os.environ['TCL_LIBRARY'] = r'C:\Users\username\AppData\Local\Programs\Python\Python36\tcl\tcl8.6' os.environ['TK_LIBRARY'] = r'C:\Users\username\AppData\Local\Programs\Python\Python36\tcl\tk8.6' ``` 其中,将`username`替换为你的用户名,将Python路径替换为你的Python安装路径。 2.在.spec文件中添加以下代码: ```python a = Analysis(['your_script.py'], pathex=['path/to/your/script'], binaries=[], datas=[], hiddenimports=['your_module'], hookspath=[], runtime_hooks=[], excludes=[], win_no_prefer_redirects=False, win_private_assemblies=False, cipher=None, noarchive=False) a.datas += [('path/to/your/file', 'path/in/archive/file', 'DATA')] ``` 其中,将`your_script.py`替换为你的Python脚本文件名,将`path/to/your/script`替换为你的Python脚本文件所在路径,将`your_module`替换为你的Python脚本中导入的模块名,将`path/to/your/file`替换为你的文件路径,将`path/in/archive/file`替换为你在打包后的可执行文件中想要存放该文件的路径。 3.在.spec文件中添加以下代码: ```python import codecs block_cipher = None a = Analysis(['your_script.py'], pathex=['path/to/your/script'], binaries=[], datas=[], hiddenimports=['your_module'], hookspath=[], runtime_hooks=[], excludes=[], win_no_prefer_redirects=False, win_private_assemblies=False, cipher=block_cipher, noarchive=False) pyz = PYZ(a.pure, a.zipped_data, cipher=block_cipher) exe = EXE(pyz, a.scripts, a.binaries, a.zipfiles, a.datas, [], name='your_executable_file_name', debug=False, bootloader_ignore_signals=False, strip=False, upx=True, upx_exclude=[], upx_include=[], console=True ) ``` 其中,将`your_script.py`替换为你的Python脚本文件名,将`path/to/your/script`替换为你的Python脚本文件所在路径,将`your_module`替换为你的Python脚本中导入的模块名,将`your_executable_file_name`替换为你想要生成的可执行文件名。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值