From 677ba6add341c93065eb0560af3fc326d2efb2b3 Mon Sep 17 00:00:00 2001 From: Fabien Jakimowicz Date: Thu, 25 Sep 2025 15:38:26 +0200 Subject: [PATCH] Python version 3.12.10 / Pyinstaller 6.16.0 / Windows 32+64 --- Dockerfile-py3-win32 | 49 ++++++++++++++++++++++++----------------- Dockerfile-py3-win64 | 52 ++++++++++++++++++++++++++------------------ 2 files changed, 60 insertions(+), 41 deletions(-) diff --git a/Dockerfile-py3-win32 b/Dockerfile-py3-win32 index 89787b0..5348260 100644 --- a/Dockerfile-py3-win32 +++ b/Dockerfile-py3-win32 @@ -1,16 +1,16 @@ -FROM ubuntu:16.04 +FROM ubuntu:20.04 -ENV DEBIAN_FRONTEND noninteractive +ENV DEBIAN_FRONTEND=noninteractive -ARG WINE_VERSION=winehq-staging -ARG PYTHON_VERSION=3.7.5 -ARG PYINSTALLER_VERSION=3.6 +ARG WINE_VERSION=winehq-stable +ARG PYTHON_VERSION=3.12.10 +ARG PYINSTALLER_VERSION=6.16.0 # we need wine for this all to work, so we'll use the PPA RUN set -x \ && dpkg --add-architecture i386 \ && apt-get update -qy \ - && apt-get install --no-install-recommends -qfy apt-transport-https software-properties-common wget \ + && apt-get install --no-install-recommends -qfy apt-transport-https software-properties-common wget xvfb xdotool x11-utils xterm gpg-agent rename \ && wget -nv https://dl.winehq.org/wine-builds/winehq.key \ && apt-key add winehq.key \ && add-apt-repository 'https://dl.winehq.org/wine-builds/ubuntu/' \ @@ -22,9 +22,15 @@ RUN set -x \ && mv winetricks /usr/local/bin # wine settings -ENV WINEARCH win32 -ENV WINEDEBUG fixme-all -ENV WINEPREFIX /wine +ENV WINEARCH=win32 +ENV WINEDEBUG=fixme-all +ENV WINEPREFIX=/wine + +# xvfb settings +# from https://github.com/engineervix/docker-pyinstaller/blob/b99163b6eb0a81fc9a0bfd498c09c4e0253d01b2/Dockerfile-py3-win64#L56-L59 +ENV DISPLAY=:0 +RUN set -x \ + && echo 'Xvfb $DISPLAY -screen 0 1024x768x24 &' >> /root/.bashrc # PYPI repository location ENV PYPI_URL=https://pypi.python.org/ @@ -35,19 +41,19 @@ ENV PYPI_INDEX_URL=https://pypi.python.org/simple # the files directly, since installing isn't running correctly. RUN set -x \ && winetricks win7 \ - && for msifile in `echo core dev exe lib path pip tcltk tools`; do \ + && for msifile in `echo core dev exe lib path pip tcltk`; do \ wget -nv "https://www.python.org/ftp/python/$PYTHON_VERSION/win32/${msifile}.msi"; \ - wine msiexec /i "${msifile}.msi" /qb TARGETDIR=C:/Python37; \ + wine msiexec /i "${msifile}.msi" /qb TARGETDIR=C:/Python312; \ rm ${msifile}.msi; \ done \ - && cd /wine/drive_c/Python37 \ - && echo 'wine '\''C:\Python37\python.exe'\'' "$@"' > /usr/bin/python \ - && echo 'wine '\''C:\Python37\Scripts\easy_install.exe'\'' "$@"' > /usr/bin/easy_install \ - && echo 'wine '\''C:\Python37\Scripts\pip.exe'\'' "$@"' > /usr/bin/pip \ - && echo 'wine '\''C:\Python37\Scripts\pyinstaller.exe'\'' "$@"' > /usr/bin/pyinstaller \ - && echo 'wine '\''C:\Python37\Scripts\pyupdater.exe'\'' "$@"' > /usr/bin/pyupdater \ + && cd /wine/drive_c/Python312 \ + && echo 'wine '\''C:\Python312\python.exe'\'' "$@"' > /usr/bin/python \ + && echo 'wine '\''C:\Python312\Scripts\easy_install.exe'\'' "$@"' > /usr/bin/easy_install \ + && echo 'wine '\''C:\Python312\Scripts\pip.exe'\'' "$@"' > /usr/bin/pip \ + && echo 'wine '\''C:\Python312\Scripts\pyinstaller.exe'\'' "$@"' > /usr/bin/pyinstaller \ + && echo 'wine '\''C:\Python312\Scripts\pyupdater.exe'\'' "$@"' > /usr/bin/pyupdater \ && echo 'assoc .py=PythonScript' | wine cmd \ - && echo 'ftype PythonScript=c:\Python37\python.exe "%1" %*' | wine cmd \ + && echo 'ftype PythonScript=c:\Python312\python.exe "%1" %*' | wine cmd \ && while pgrep wineserver >/dev/null; do echo "Waiting for wineserver"; sleep 1; done \ && chmod +x /usr/bin/python /usr/bin/easy_install /usr/bin/pip /usr/bin/pyinstaller /usr/bin/pyupdater \ && (pip install -U pip || true) \ @@ -61,14 +67,17 @@ ENV W_TMP="$W_DRIVE_C/windows/temp/_$0" # install Microsoft Visual C++ Redistributable for Visual Studio 2017 dll files RUN set -x \ && rm -f "$W_TMP"/* \ - && wget -P "$W_TMP" https://download.visualstudio.microsoft.com/download/pr/11687613/88b50ce70017bf10f2d56d60fcba6ab1/VC_redist.x86.exe \ - && cabextract -q --directory="$W_TMP" "$W_TMP"/VC_redist.x86.exe \ + && wget -P "$W_TMP" https://aka.ms/vs/16/release/vc_redist.x86.exe \ + && ls "$W_TMP"/ \ + && cabextract -q --directory="$W_TMP" "$W_TMP"/vc_redist.x86.exe \ && cabextract -q --directory="$W_TMP" "$W_TMP/a10" \ && cabextract -q --directory="$W_TMP" "$W_TMP/a11" \ && cd "$W_TMP" \ && rename 's/_/\-/g' *.dll \ && cp "$W_TMP"/*.dll "$W_SYSTEM_DLLS"/ +RUN ls /wine/drive_c/Python312 + # install pyinstaller RUN /usr/bin/pip install pyinstaller==$PYINSTALLER_VERSION diff --git a/Dockerfile-py3-win64 b/Dockerfile-py3-win64 index e98284e..38e0944 100644 --- a/Dockerfile-py3-win64 +++ b/Dockerfile-py3-win64 @@ -1,16 +1,16 @@ -FROM ubuntu:16.04 +FROM ubuntu:20.04 -ENV DEBIAN_FRONTEND noninteractive +ENV DEBIAN_FRONTEND=noninteractive -ARG WINE_VERSION=winehq-staging -ARG PYTHON_VERSION=3.7.5 -ARG PYINSTALLER_VERSION=3.6 +ARG WINE_VERSION=winehq-stable +ARG PYTHON_VERSION=3.12.10 +ARG PYINSTALLER_VERSION=6.16.0 # we need wine for this all to work, so we'll use the PPA RUN set -x \ && dpkg --add-architecture i386 \ && apt-get update -qy \ - && apt-get install --no-install-recommends -qfy apt-transport-https software-properties-common wget \ + && apt-get install --no-install-recommends -qfy apt-transport-https software-properties-common wget xvfb xdotool x11-utils xterm gpg-agent rename \ && wget -nv https://dl.winehq.org/wine-builds/winehq.key \ && apt-key add winehq.key \ && add-apt-repository 'https://dl.winehq.org/wine-builds/ubuntu/' \ @@ -22,9 +22,15 @@ RUN set -x \ && mv winetricks /usr/local/bin # wine settings -ENV WINEARCH win64 -ENV WINEDEBUG fixme-all -ENV WINEPREFIX /wine +ENV WINEARCH=win64 +ENV WINEDEBUG=fixme-all +ENV WINEPREFIX=/wine + +# xvfb settings +# from https://github.com/engineervix/docker-pyinstaller/blob/b99163b6eb0a81fc9a0bfd498c09c4e0253d01b2/Dockerfile-py3-win64#L56-L59 +ENV DISPLAY=:0 +RUN set -x \ + && echo 'Xvfb $DISPLAY -screen 0 1024x768x24 &' >> /root/.bashrc # PYPI repository location ENV PYPI_URL=https://pypi.python.org/ @@ -35,19 +41,19 @@ ENV PYPI_INDEX_URL=https://pypi.python.org/simple # the files directly, since installing isn't running correctly. RUN set -x \ && winetricks win7 \ - && for msifile in `echo core dev exe lib path pip tcltk tools`; do \ + && for msifile in `echo core dev exe lib path pip tcltk`; do \ wget -nv "https://www.python.org/ftp/python/$PYTHON_VERSION/amd64/${msifile}.msi"; \ - wine msiexec /i "${msifile}.msi" /qb TARGETDIR=C:/Python37; \ + wine msiexec /i "${msifile}.msi" /qb TARGETDIR=C:/Python312; \ rm ${msifile}.msi; \ done \ - && cd /wine/drive_c/Python37 \ - && echo 'wine '\''C:\Python37\python.exe'\'' "$@"' > /usr/bin/python \ - && echo 'wine '\''C:\Python37\Scripts\easy_install.exe'\'' "$@"' > /usr/bin/easy_install \ - && echo 'wine '\''C:\Python37\Scripts\pip.exe'\'' "$@"' > /usr/bin/pip \ - && echo 'wine '\''C:\Python37\Scripts\pyinstaller.exe'\'' "$@"' > /usr/bin/pyinstaller \ - && echo 'wine '\''C:\Python37\Scripts\pyupdater.exe'\'' "$@"' > /usr/bin/pyupdater \ + && cd /wine/drive_c/Python312 \ + && echo 'wine '\''C:\Python312\python.exe'\'' "$@"' > /usr/bin/python \ + && echo 'wine '\''C:\Python312\Scripts\easy_install.exe'\'' "$@"' > /usr/bin/easy_install \ + && echo 'wine '\''C:\Python312\Scripts\pip.exe'\'' "$@"' > /usr/bin/pip \ + && echo 'wine '\''C:\Python312\Scripts\pyinstaller.exe'\'' "$@"' > /usr/bin/pyinstaller \ + && echo 'wine '\''C:\Python312\Scripts\pyupdater.exe'\'' "$@"' > /usr/bin/pyupdater \ && echo 'assoc .py=PythonScript' | wine cmd \ - && echo 'ftype PythonScript=c:\Python37\python.exe "%1" %*' | wine cmd \ + && echo 'ftype PythonScript=c:\Python312\python.exe "%1" %*' | wine cmd \ && while pgrep wineserver >/dev/null; do echo "Waiting for wineserver"; sleep 1; done \ && chmod +x /usr/bin/python /usr/bin/easy_install /usr/bin/pip /usr/bin/pyinstaller /usr/bin/pyupdater \ && (pip install -U pip || true) \ @@ -61,14 +67,18 @@ ENV W_TMP="$W_DRIVE_C/windows/temp/_$0" # install Microsoft Visual C++ Redistributable for Visual Studio 2017 dll files RUN set -x \ && rm -f "$W_TMP"/* \ - && wget -P "$W_TMP" https://download.visualstudio.microsoft.com/download/pr/11100230/15ccb3f02745c7b206ad10373cbca89b/VC_redist.x64.exe \ - && cabextract -q --directory="$W_TMP" "$W_TMP"/VC_redist.x64.exe \ - && cabextract -q --directory="$W_TMP" "$W_TMP/a10" \ + && wget -P "$W_TMP" https://aka.ms/vs/16/release/vc_redist.x64.exe \ + && ls "$W_TMP"/ \ + && cabextract -q --directory="$W_TMP" "$W_TMP"/vc_redist.x64.exe \ && cabextract -q --directory="$W_TMP" "$W_TMP/a11" \ + && cabextract -q --directory="$W_TMP" "$W_TMP/a12" \ + && cabextract -q --directory="$W_TMP" "$W_TMP/a13" \ && cd "$W_TMP" \ && rename 's/_/\-/g' *.dll \ && cp "$W_TMP"/*.dll "$W_SYSTEM64_DLLS"/ +RUN ls /wine/drive_c/Python312 + # install pyinstaller RUN /usr/bin/pip install pyinstaller==$PYINSTALLER_VERSION