使用Pytorch并与PyInstaller打包在一起的EXE无法在其他PC上运行

时间:2019-05-13 16:18:18

标签: python windows exe pytorch pyinstaller

我使用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上运行。如果您有任何想法请帮助我。谢谢!

1 个答案:

答案 0 :(得分:0)

所以我不知道问题的根源,但是多亏@raviv post,您可以通过在conda中使用pip安装pytorch来对其进行工作(对我有用)

  1. conda uninstall pytorch
  2. pip install https://download.pytorch.org/whl/cu90/torch-1.1.0-cp36-cp36m-win_amd64.whl
  3. pip install https://download.pytorch.org/whl/cu90/torchvision-0.3.0-cp36-cp36m-win_amd64.whl
  4. 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