diff options
author | Shyamnath Premnadh <shyamnath.premnadh@qt.io> | 2023-03-15 11:33:59 +0100 |
---|---|---|
committer | Shyamnath Premnadh <shyamnath.premnadh@qt.io> | 2023-03-16 15:25:08 +0100 |
commit | be64f1cc97875b99811f8205e44265cafd846837 (patch) | |
tree | 9f19caa315cd2a0ac3e078936bc8a3e6190bf45d /sources/pyside-tools/deploy_lib | |
parent | b2bd0b0795f41ef6eae8be12d3c5b42aff96e1ec (diff) |
Deployment: Specify Package Version
- Specific package versions can be specified as
{package_name}=={version}
- Nuitka 1.5.1 breaks with PySide6, so use version 1.4.8
- new package "importlib_metadata" required to find a python package's
version at run time. This is added to Python from 3.8, but since
we support 3.7 the package "importlib_metadata" is required
- modify test accordingly
Task-number: PYSIDE-1612
Pick-to: 6.4
Change-Id: Ie74273ba2a116f0f94f3a3e10120b2de78482724
Reviewed-by: Cristian Maureira-Fredes <cristian.maureira-fredes@qt.io>
Diffstat (limited to 'sources/pyside-tools/deploy_lib')
-rw-r--r-- | sources/pyside-tools/deploy_lib/default.spec | 2 | ||||
-rw-r--r-- | sources/pyside-tools/deploy_lib/python_helper.py | 39 |
2 files changed, 30 insertions, 11 deletions
diff --git a/sources/pyside-tools/deploy_lib/default.spec b/sources/pyside-tools/deploy_lib/default.spec index 909b44d73..812861a70 100644 --- a/sources/pyside-tools/deploy_lib/default.spec +++ b/sources/pyside-tools/deploy_lib/default.spec @@ -24,7 +24,7 @@ python_path = # python packages to install # ordered-set: increase compile time performance of nuitka packaging # zstandard: provides final executable size optimization -packages = nuitka,ordered_set,zstandard +packages = nuitka==1.4.8,ordered_set,zstandard [qt] diff --git a/sources/pyside-tools/deploy_lib/python_helper.py b/sources/pyside-tools/deploy_lib/python_helper.py index 0c1978a9d..006ad3249 100644 --- a/sources/pyside-tools/deploy_lib/python_helper.py +++ b/sources/pyside-tools/deploy_lib/python_helper.py @@ -5,6 +5,7 @@ import sys import os import logging from importlib import util +from importlib_metadata import version from pathlib import Path from . import Nuitka, run_command, Config @@ -51,20 +52,38 @@ class PythonExecutable: logging.info("[DEPLOY] You are already in virtual environment!") def install(self, packages: list = None): - if packages: - for package in packages: - if not self.is_installed(package=package): - logging.info(f"[DEPLOY] Installing package: {package}") + for package in packages: + package_info = package.split('==') + package_components_len = len(package_info) + package_name, package_version = None, None + if package_components_len == 1: + package_name = package_info[0] + elif package_components_len == 2: + package_name = package_info[0] + package_version = package_info[1] + else: + raise ValueError(f"{package} should be of the format 'package_name'=='version'") + + if not self.is_installed(package=package_name): + logging.info(f"[DEPLOY] Installing package: {package}") + run_command( + command=[self.exe, "-m", "pip", "install", package], + dry_run=self.dry_run, + ) + elif package_version: + installed_version = version(package_name) + if package_version != installed_version: + logging.info(f"[DEPLOY] Installing package: {package_name}" + f"version: {package_version}") run_command( - command=[self.exe, "-m", "pip", "install", package], + command=[self.exe, "-m", "pip", "install", "--force", package], dry_run=self.dry_run, ) else: - logging.info(f"[DEPLOY] Upgrading package: {package}") - run_command( - command=[self.exe, "-m", "pip", "install", "--upgrade", package], - dry_run=self.dry_run, - ) + logging.info(f"[DEPLOY] package: {package_name}=={package_version}" + "already installed") + else: + logging.info(f"[DEPLOY] package: {package_name} already installed") def is_installed(self, package): return bool(util.find_spec(package)) |