Fab*_*Dev 6 python pyinstaller pytorch torchvision
这是我的main.py:
import torchvision
input("Press key")
Run Code Online (Sandbox Code Playgroud)
它在命令行中正确运行: python main.py
我需要一个适用于 Windows 的可执行文件。所以我做了 :pyinstaller main.py
但是当我启动main.exe 时,里面出现/dist/main了这个错误:
Traceback (most recent call last):
File "main.py", line 1, in <module>
... (omitted)
File "site-packages\torchvision\ops\misc.py", line 135, in <module>
File "site-packages\torchvision\ops\misc.py", line 148, in FrozenBatchNorm2d
File "site-packages\torch\jit\__init__.py", line 850, in script_method
File "site-packages\torch\jit\frontend.py", line 152, in get_jit_def
File "inspect.py", line 973, in getsource
File "inspect.py", line 955, in getsourcelines
File "inspect.py", line 786, in findsource
OSError: could not get source code
[2836] Failed to execute script main
Run Code Online (Sandbox Code Playgroud)
似乎某些源代码没有从 pyinstaller 正确导入。我不确定问题是出在torch模块还是torchvision 上。
附加信息:
系统信息:
[编辑]
我发现问题出在 torchvision 中 FrozenBatchNorm2d类的定义中。以下脚本产生与之前发布的相同的错误:
主文件
import torch
class FrozenBatchNorm2d(torch.jit.ScriptModule):
def __init__(self, n):
super(FrozenBatchNorm2d, self).__init__()
@torch.jit.script_method
def forward(self):
pass
Run Code Online (Sandbox Code Playgroud)
我复制了所有的火炬源文件。但我仍然收到错误...
将torchvision降级到以前的版本修复错误。
pip uninstall torchvision
pip install torchvision==0.2.2.post3
Run Code Online (Sandbox Code Playgroud)