这是我的main.py文件:
import torchvision
input("Press key")
在命令行中运行正常:python main.py
我需要一个Windows可执行文件,所以我做了这个:pyinstaller main.py
但是当我启动/dist/main
目录下的main.exe时,出现了以下错误:
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
似乎有些源代码没有正确地从pyinstaller导入。我不确定问题是torch模块还是torchvision模块。
额外信息:
- 我最近安装了Visual Studio 2019
系统信息:
- Windows 10
- Python 3.7
- torch-1.1.0
- torchvision-0.3.0
[EDIT]
我发现问题在于torchvision中的FrozenBatchNorm2d类的定义。以下脚本会产生与之前发布的脚本相同的错误:
main.py
import torch
class FrozenBatchNorm2d(torch.jit.ScriptModule):
def __init__(self, n):
super(FrozenBatchNorm2d, self).__init__()
@torch.jit.script_method
def forward(self):
pass
我复制了所有的 Torch 源文件,但是还是遇到了错误...
pyinstaller --hidden-import=torchvision --hidden-import=torch
吗? - Masoud Rahimi