1. 问题现象
系统环境
- Python 3.6.9
- torch 1.2.0
- torchvision 0.4.0
- Pyinstaller 4.5.1
Pyinstaller
打包 torch
后执行失败 OSError: could not get source code
。
Traceback (most recent call last):File "main.py", line 29, in <module>File "<frozen importlib._bootstrap>", line 971, in _find_and_loadFile "<frozen importlib._bootstrap>", line 955, in _find_and_load_unlockedFile "<frozen importlib._bootstrap>", line 665, in _load_unlockedFile "PyInstaller/loader/pyimod03_importers.py", line 546, in exec_moduleFile "attribute_extract/extract_attribute.py", line 15, in <module>File "<frozen importlib._bootstrap>", line 971, in _find_and_loadFile "<frozen importlib._bootstrap>", line 955, in _find_and_load_unlockedFile "<frozen importlib._bootstrap>", line 665, in _load_unlockedFile "PyInstaller/loader/pyimod03_importers.py", line 546, in exec_moduleFile "torchvision/__init__.py", line 1, in <module>File "<frozen importlib._bootstrap>", line 971, in _find_and_loadFile "<frozen importlib._bootstrap>", line 955, in _find_and_load_unlockedFile "<frozen importlib._bootstrap>", line 665, in _load_unlockedFile "PyInstaller/loader/pyimod03_importers.py", line 546, in exec_moduleFile "torchvision/models/__init__.py", line 12, in <module>File "<frozen importlib._bootstrap>", line 971, in _find_and_loadFile "<frozen importlib._bootstrap>", line 955, in _find_and_load_unlockedFile "<frozen importlib._bootstrap>", line 665, in _load_unlockedFile "PyInstaller/loader/pyimod03_importers.py", line 546, in exec_moduleFile "torchvision/models/detection/__init__.py", line 1, in <module>File "<frozen importlib._bootstrap>", line 971, in _find_and_loadFile "<frozen importlib._bootstrap>", line 955, in _find_and_load_unlockedFile "<frozen importlib._bootstrap>", line 665, in _load_unlockedFile "PyInstaller/loader/pyimod03_importers.py", line 546, in exec_moduleFile "torchvision/models/detection/faster_rcnn.py", line 7, in <module>File "<frozen importlib._bootstrap>", line 971, in _find_and_loadFile "<frozen importlib._bootstrap>", line 955, in _find_and_load_unlockedFile "<frozen importlib._bootstrap>", line 665, in _load_unlockedFile "PyInstaller/loader/pyimod03_importers.py", line 546, in exec_moduleFile "torchvision/ops/misc.py", line 135, in <module>File "torchvision/ops/misc.py", line 148, in FrozenBatchNorm2dFile "torch/jit/__init__.py", line 1204, in script_methodFile "torch/jit/frontend.py", line 156, in get_jit_defFile "inspect.py", line 955, in getsourcelinesFile "inspect.py", line 786, in findsource
OSError: could not get source code
[2733] Failed to execute script 'main' due to unhandled exception!
2. 解决方法
- 降低
torchvision
版本
sudo pip3 install torchvision==0.2.2.post3
- 设置环境变量
在 import torch
之前加入下面语句
os.environ["PYTORCH_JIT"] = "0"