У меня проблема при запуске 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