我使用pytorch构建了程序的exe。它在运行exe的PC上运行良好,但在另一台PC上却无法运行。引发ImportError,DLL加载失败。
我是pytorch和pyinstaller的新手,所以我不知道发生了什么。
ImportError:
F:\test>test D:\testData.xml D:\testResult.xml
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.0\bin;C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.0\libnvvp;D:\Program Files\Java\jdk-9.0.4\bin;D:\Program Files\Java\jdk-9.0.4\jre\bin;C:\ProgramData\Oracle\Java\javapath;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;D:\Program Files\MATLAB\R2016a\runtime\win64;D:\Program Files\MATLAB\R2016a\bin;D:\Program Files\MATLAB\R2016a\polyspace\bin;D:\FFMPEG\bin;C:\WINDOWS\System32\OpenSSH\;D:\Anaconda3;D:\Anaconda3\Scripts;D:\Anaconda3;D:\Anaconda3\Library\mingw-w64\bin;D:\Anaconda3\Library\usr\bin;D:\Anaconda3\Library\bin;D:\Anaconda3\Scripts;D:\Python\Python36\Scripts\;D:\Python\Python36\;C:\Users\snow-\AppData\Local\Microsoft\WindowsApps;D:\Program Files\modeltech64_10.4\win64;D:\modeltech64_10.4\win64;D:\Modeltech_pe_edu_10.4a\win32pe_edu;F:\test;F:\test\torch\lib
Traceback (most recent call last):
File "test.py", line 10, in <module>
File "C:\Users\yuech\AppData\Local\conda\conda\envs\cy_pytorch\lib\site-packages\PyInstaller\loader\pyimod03_importers.py", line 627, in exec_module
File "Lib\site-packages\torch\__init__.py", line 102, in <module>
ImportError: DLL load failed: 找不到指定的模块。
[10812] Failed to execute script test
我打印所有的“ PATH”
第6行是
import torch
第102行是
from torch._C import *
我在互联网上搜索,发现它可能是由openmp或numpy引起的。我检查了一下,并把它们放在了文件夹中。
我试图添加变量环境'PATH',但是它不起作用。
我使用pytorch 1.0.1,python 3.6.8和pyinstaller 3.4
我用此行构建了我的exe
pyinstaller test.py --exclude-module PyQt5 -p dataLoader_cy.py --hidden-import dataLoader_cy -p C:\Users\yuech\AppData\Local\conda\conda\envs\cy_pytorch\Lib\site-packages --hidden-import
torchvision --hidden-import numpy
我尝试以此添加环境变量
import os
os.environ['PATH'] += (";" + os.path.abspath('.'))
os.environ['PATH'] += (";" + os.path.join(os.path.abspath('.'), "torch\lib"))
由于我在python和pytorch中的经验有限,因此我无法理解为什么它可以在一台PC上运行而不能在其他PC上运行。我希望我的exe在其他Windows上运行。如果您有任何想法请帮助我。谢谢!
答案 0 :(得分:0)
所以我不知道问题的根源,但是多亏@raviv post,您可以通过在conda中使用pip安装pytorch来对其进行工作(对我有用)
conda uninstall pytorch
pip install https://download.pytorch.org/whl/cu90/torch-1.1.0-cp36-cp36m-win_amd64.whl
pip install https://download.pytorch.org/whl/cu90/torchvision-0.3.0-cp36-cp36m-win_amd64.whl
pyinstaller test.py --exclude-module PyQt5 -p dataLoader_cy.py --hidden-import dataLoader_cy -p C:\Users\yuech\AppData\Local\conda\conda\envs\cy_pytorch\Lib\site-packages --hidden-import
torchvision --hidden-import numpy
或安装conda cudatoolkit(我没有尝试过)。
用普通的Python(在conda之外)制作.exe并用pip安装pytorch对我不起作用。
所有积分归@raviv raviv