EXE, использующий Pytorch и упакованный PyInstaller, не может работать на другом ПК - PullRequest
0 голосов
/ 13 мая 2019

Я собрал exe программы, используя pytorch. Он хорошо работает на ПК, на котором был построен exe, но не на другом ПК. Возникла ошибка ImportError, сбой загрузки DLL.

Я новичок в pytorch и pyinstaller, поэтому не могу понять, что случилось.

Ошибка импорта:

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

Я печатаю все «ПУТИ»

строка 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 ограничен, я не могу понять, почему он может работать на одном ПК, но не на других. Я хочу, чтобы мой exe работал на других окнах. Пожалуйста, помогите мне, если у вас есть идея. Спасибо!

1 Ответ

0 голосов
/ 03 июля 2019

Так что я не знаю источник проблемы, но благодаря @raviv post , вы можете обойти это (работает для меня), установив pytorch с pip в conda:

  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 (я не пробовал).

Создание .exe в простом Python (за пределами conda) и установка pytorch с pip у меня не работали.

Все кредиты @raviv raviv

...