Docker Windows установить VC ++ - PullRequest
1 голос
/ 14 июля 2020

У меня проблема при запуске cv2 внутри контейнера: failed: ImportError: DLL load failed. То, что я уже читал, эта проблема может быть связана с отсутствием визуального c ++.

Я создал Dockerfile на основе python windows image: FROM python:2-windowsservercore. И я пытаюсь установить vcredist_x64.exe на одном из шагов Dockerfile. Но похоже, что установка не работает, потому что проблема с DLL все еще возникает, и когда я выдаю cmd insiade container: Get-ItemProperty HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\* Я не вижу V C info.

Вопрос:

  • использовать правильный базовый образ для установки?
  • использовать правильные шаги в Dockerfile?
  • может быть, уже есть docker образ с vc ++, где python можно установить?

Я работаю на Windows Server 2019 - 10.0.17763.1 (WinBuild.160101.0800)

Dockerfile:

FROM python:2-windowsservercore

#Copy and install python requirements
COPY requirements.txt c:/tmp/

USER ContainerAdministrator

RUN pip install --upgrade pip ; \ 
    pip install -r c:\tmp\requirements.txt

SHELL ["powershell", "-Command", "$ErrorActionPreference = 'Stop'; $ProgressPreference = 'SilentlyContinue'; $verbosePreference='Continue';"]
ADD http://download.microsoft.com/download/0/5/6/056dcda9-d667-4e27-8001-8a0c6971d6b1/vcredist_x64.exe vcredist_x64.exe
RUN Start-Process -filepath C:\vcredist_x64.exe -ArgumentList "/install", "/passive", "/norestart", "'/log a.txt'" -PassThru | wait-process
    
ENV TZ=Europe/Warsaw

#Copy repo to /app
COPY . c:/app/

#Set workdir as app
WORKDIR c:\\app

Запустить контейнер cmd: docker run testimage:latest python -m robot --dryrun --pythonpath C:\app .... И вывод:

[ ERROR ] Error in file 'C:\app\tests\cases\splicer\splicer_stream_check.robot': Importing test library 'C:\app\library\stream_analysis\Analysis.py' failed: ImportError: DLL load failed: The specified module could not be found.
Traceback (most recent call last):
  File "C:\app\library\stream_analysis\Analysis.py", line 10, in <module>
    from library.stream_analysis.FrameProcessing import AdDetecting
  File "C:\app\library\stream_analysis\FrameProcessing.py", line 4, in <module>
    import cv2
  File "C:\Python\lib\site-packages\cv2\__init__.py", line 3, in <module>
    from .cv2 import *
PYTHONPATH:
  C:\app
  C:\Windows\SYSTEM32\python27.zip
  C:\Python\DLLs
  C:\Python\lib
  C:\Python\lib\plat-win
  C:\Python\lib\lib-tk
  C:\Python
  C:\Python\lib\site-packages
  C:\Python\lib\site-packages\win32
  C:\Python\lib\site-packages\win32\lib
  C:\Python\lib\site-packages\Pythonwin

Внутри контейнера:

PS C:\app> Get-ItemProperty HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\*


NoRemove     : 1
PSPath       : Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Uninstall\WIC
PSParentPath : Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Uninstall
PSChildName  : WIC
PSDrive      : HKLM
PSProvider   : Microsoft.PowerShell.Core\Registry

DisplayIcon         : C:\Python\python.exe
AuthorizedCDFPrefix :
Comments            :
Contact             :
DisplayVersion      : 2.7.18150
HelpLink            :
HelpTelephone       :
InstallDate         : 20200420
InstallLocation     :
InstallSource       : C:\
ModifyPath          : MsiExec.exe /I{A5F504DF-2ED9-4A2D-A2F3-9D2750DD42D6}
Publisher           : Python Software Foundation
Readme              :
Size                :
EstimatedSize       : 46152
UninstallString     : MsiExec.exe /I{A5F504DF-2ED9-4A2D-A2F3-9D2750DD42D6}
URLInfoAbout        :
URLUpdateInfo       :
VersionMajor        : 2
VersionMinor        : 7
WindowsInstaller    : 1
Version             : 34031334
Language            : 1033
DisplayName         : Python 2.7.18 (64-bit)
PSPath              : Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Uninstall\{A5F504DF-2ED9-4A2D-A2F3-9D2750DD42D6}
PSParentPath        : Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Uninstall
PSChildName         : {A5F504DF-2ED9-4A2D-A2F3-9D2750DD42D6}
PSDrive             : HKLM
PSProvider          : Microsoft.PowerShell.Core\Registry
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...