Difference between revisions of "Appendices:Python"

From Wiki_dbSQWare
Jump to: navigation, search
m
m
Line 1: Line 1:
 
W I P
 
W I P
  
==Généralités==
+
==Generality==
===Limites de cette section===
+
===Limitations of this section===
Cette section n’a pas la prétention de traiter tous les cas possibles d'installation de Python …<br>
+
This section does not claim to handle all possible Python installation cases …<br>
Le principe est d'avoir la bonne version et ses dépendances pour le module SQWarePredict.<br>
+
The principle is to have the correct version and its dependencies for the SQWarePredict module.<br>
 
<br>
 
<br>
Avant de vous lancer dans l’installation, vous devez d'abord avoir la version de dbSQWare avec SQWarePredict (v2025.01 mini) pour avoir les dépendances.<br>
+
Before you start the installation, you must first have the version of dbSQWare with SQWarePredict (v2025.01 mini) to have the dependencies.<br>
 
<br>
 
<br>
  
===Principe===
+
===Principle===
Nous allons :
+
We are going to :
* Installer Python-3.12.8
+
* Install Python-3.12.8
* Configurer l'environnement
+
* Setup the environnement
* Installer les dépendances
+
* Install dependencies
* Paramétrer et tester SQWarePredict
+
* Setup and test SQWarePredict
  
==Installation==
+
==Installing==
===Installation de Python-3.12.8===
+
===Installing Python-3.12.8===
 
<pre>
 
<pre>
 
# Install Python-3.12.8
 
# Install Python-3.12.8
Line 25: Line 25:
 
<syntaxhighlight lang="sh" line>
 
<syntaxhighlight lang="sh" line>
 
# From : root@vmsqwarebox
 
# From : root@vmsqwarebox
## Pour la compil Python
+
## For the compilation of Python
 
dnf install -y zlib-devel bzip2 bzip2-devel readline-devel sqlite sqlite-devel openssl-devel xz xz-devel libffi-devel findutils ncurses-devel
 
dnf install -y zlib-devel bzip2 bzip2-devel readline-devel sqlite sqlite-devel openssl-devel xz xz-devel libffi-devel findutils ncurses-devel
  
Line 34: Line 34:
 
</syntaxhighlight>
 
</syntaxhighlight>
  
====Récupération des sources pour une installation avec accès internet====
+
====Rsource recovery for an installation with internet access
 +
====
 
Téléchargez les sources et mettez-les dans /tmp :
 
Téléchargez les sources et mettez-les dans /tmp :
 
<syntaxhighlight lang="sh" line>
 
<syntaxhighlight lang="sh" line>
Line 46: Line 47:
 
</syntaxhighlight>
 
</syntaxhighlight>
  
====Récupération des sources pour une installation sans accès internet====
+
====Download the source for an installation with internet access====
Téléchargez les sources depuis ce ticket https://support.dbsqware.com/view.php?id=497 et mettez-les dans /tmp :
+
Download sources from https://support.dbsqware.com/view.php?id=497 and put them in /tmp :
 
<syntaxhighlight lang="sh" line>
 
<syntaxhighlight lang="sh" line>
 
# From : dbsqware@vmsqwarebox
 
# From : dbsqware@vmsqwarebox
Line 128: Line 129:
 
</syntaxhighlight>
 
</syntaxhighlight>
  
===Mise à jour de l'environnement===
+
===Environnement update===
Dans le ~dbsqware/.bash_profile
+
Changes for ~dbsqware/.bash_profile
 
<syntaxhighlight lang="sh" line>
 
<syntaxhighlight lang="sh" line>
# env Python 3.12.8 (pour SQWarePredict)
+
# env Python 3.12.8 (for SQWarePredict)
 
export PATH=$HOME/dbSQWare/SQWarePredict/python/3.12.8/bin:$PATH
 
export PATH=$HOME/dbSQWare/SQWarePredict/python/3.12.8/bin:$PATH
 
export LD_LIBRARY_PATH=$HOME/dbSQWare/SQWarePredict/python/3.12.8/lib:$LD_LIBRARY_PATH
 
export LD_LIBRARY_PATH=$HOME/dbSQWare/SQWarePredict/python/3.12.8/lib:$LD_LIBRARY_PATH
Line 141: Line 142:
  
  
# vérification du PATH
+
# check the PATH
  
 
dbsqware@vmsqwarebox:$HOME $ type python
 
dbsqware@vmsqwarebox:$HOME $ type python
Line 152: Line 153:
  
 
<syntaxhighlight lang="sh" line>
 
<syntaxhighlight lang="sh" line>
# vérification des versions
+
# check the versions
  
 
dbsqware@vmsqwarebox:$HOME $ python --version
 
dbsqware@vmsqwarebox:$HOME $ python --version
Line 163: Line 164:
  
 
<syntaxhighlight lang="sh" line>
 
<syntaxhighlight lang="sh" line>
## Mise en place de l'env Python
+
## Setting up the Python env
 
python -m venv $HOME/dbSQWare/SQWarePredict/python/SQWarePredict-python-env-3.12.8
 
python -m venv $HOME/dbSQWare/SQWarePredict/python/SQWarePredict-python-env-3.12.8
 
cd $HOME/dbSQWare/SQWarePredict/python
 
cd $HOME/dbSQWare/SQWarePredict/python

Revision as of 17:11, 7 April 2025

W I P

Generality

Limitations of this section

This section does not claim to handle all possible Python installation cases …
The principle is to have the correct version and its dependencies for the SQWarePredict module.

Before you start the installation, you must first have the version of dbSQWare with SQWarePredict (v2025.01 mini) to have the dependencies.

Principle

We are going to :

  • Install Python-3.12.8
  • Setup the environnement
  • Install dependencies
  • Setup and test SQWarePredict

Installing

Installing Python-3.12.8

# Install Python-3.12.8
# https://www.python.org/ftp/python/3.12.8/Python-3.12.8.tgz

<syntaxhighlight lang="sh" line>

  1. From : root@vmsqwarebox
    1. For the compilation of Python

dnf install -y zlib-devel bzip2 bzip2-devel readline-devel sqlite sqlite-devel openssl-devel xz xz-devel libffi-devel findutils ncurses-devel

  1. From : dbsqware@vmsqwarebox

mkdir -p $HOME/dbSQWare/SQWarePredict/python-src mkdir -p $HOME/dbSQWare/SQWarePredict/python/3.12.8 </syntaxhighlight>

====Rsource recovery for an installation with internet access

==

Téléchargez les sources et mettez-les dans /tmp : <syntaxhighlight lang="sh" line>

  1. From : dbsqware@vmsqwarebox

cd /tmp wget https://www.python.org/ftp/python/3.12.8/Python-3.12.8.tgz cd $HOME/dbSQWare/SQWarePredict/python-src tar -xzvf /tmp/Python-3.12.8.tgz

</syntaxhighlight>

Download the source for an installation with internet access

Download sources from https://support.dbsqware.com/view.php?id=497 and put them in /tmp : <syntaxhighlight lang="sh" line>

  1. From : dbsqware@vmsqwarebox

cd $HOME/dbSQWare/SQWarePredict tar -xzvf /tmp/python-src.tgz

cd python-src tar -xzvf Python-3.12.8.tgz

</syntaxhighlight>

Build

<syntaxhighlight lang="sh" line> cd $HOME/dbSQWare/SQWarePredict/python-src/Python-3.12.8

  1. configure, dest => $HOME/dbSQWare/SQWarePredict/python/3.12.8

./configure --prefix=$HOME/dbSQWare/SQWarePredict/python/3.12.8 --enable-optimizations </syntaxhighlight>

checking build system type... x86_64-pc-linux-gnu
checking host system type... x86_64-pc-linux-gnu
checking for python3.9... python3.9
checking for --enable-universalsdk... no
checking for --with-universal-archs... no
...
config.status: creating pyconfig.h
configure: creating Modules/Setup.local
configure: creating Makefile

<syntaxhighlight lang="sh" line>

  1. compil

make </syntaxhighlight>

Running code to generate profile data (this can take a while):
# First, we need to create a clean build with profile generation
# enabled.
make profile-gen-stamp
make[1]: Entering directory '$HOME/dbSQWare/SQWarePredict/python-src/Python-3.12.8'
make clean
make[2]: Entering directory '$HOME/dbSQWare/SQWarePredict/python-src/Python-3.12.8'
find . -depth -name '__pycache__' -exec rm -rf {} ';'

...

Checked 111 modules (31 built-in, 74 shared, 1 n/a on linux-x86_64, 0 disabled, 5 missing, 0 failed on import)
make[1]: Leaving directory '/home/dbsqware/dbSQWare/SQWarePredict/python-src/Python-3.12.8'

<syntaxhighlight lang="sh" line>

  1. install

make install </syntaxhighlight>

Creating directory $HOME/dbSQWare/SQWarePredict/python/3.12.8/bin
Creating directory $HOME/dbSQWare/SQWarePredict/python/3.12.8/lib
if test "no-framework" = "no-framework" ; then \
        /usr/bin/install -c python $HOME/dbSQWare/SQWarePredict/python/3.12.8/bin/python3.9; \
...
...
Installing collected packages: setuptools, pip
  WARNING: The scripts pip3 and pip3.9 are installed in '$HOME/dbSQWare/SQWarePredict/python/3.12.8/bin' which is not on PATH.
  Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.
Successfully installed pip-23.0.1 setuptools-58.1.0

<syntaxhighlight lang="sh" line>

  1. creation des liens python et pip

cd $HOME/dbSQWare/SQWarePredict/python/3.12.8/bin ln -s python3 python ln -s pip3 pip </syntaxhighlight>

Environnement update

Changes for ~dbsqware/.bash_profile <syntaxhighlight lang="sh" line>

  1. env Python 3.12.8 (for SQWarePredict)

export PATH=$HOME/dbSQWare/SQWarePredict/python/3.12.8/bin:$PATH export LD_LIBRARY_PATH=$HOME/dbSQWare/SQWarePredict/python/3.12.8/lib:$LD_LIBRARY_PATH </syntaxhighlight>

<syntaxhighlight lang="sh" line>

  1. on sourcve le .bash_profile

. $HOME/.bash_profile


  1. check the PATH

dbsqware@vmsqwarebox:$HOME $ type python python is $HOME/dbSQWare/SQWarePredict/python/3.12.8/bin/python

dbsqware@vmsqwarebox:$HOME $ type pip pip is $HOME/dbSQWare/SQWarePredict/python/3.12.8/bin/pip

</syntaxhighlight>

<syntaxhighlight lang="sh" line>

  1. check the versions

dbsqware@vmsqwarebox:$HOME $ python --version Python 3.12.8

dbsqware@vmsqwarebox:$HOME $ pip --version pip 24.3.1 from $HOME/dbSQWare/SQWarePredict/python/3.12.8/lib/python3.12/site-packages/pip (python 3.12)

</syntaxhighlight>

<syntaxhighlight lang="sh" line>

    1. Setting up the Python env

python -m venv $HOME/dbSQWare/SQWarePredict/python/SQWarePredict-python-env-3.12.8 cd $HOME/dbSQWare/SQWarePredict/python ll SQWarePredict-python-env-3.12.8 ln -s SQWarePredict-python-env-3.12.8 SQWarePredict-python-env . $HOME/dbSQWare/SQWarePredict/python/SQWarePredict-python-env/bin/activate

</syntaxhighlight>

<syntaxhighlight lang="sh" line> dbsqware@vmsqwarebox:$HOME $ type python python is $HOME/dbSQWare/SQWarePredict/python/SQWarePredict-python-env-3.12.8/bin/python

dbsqware@vmsqwarebox:$HOME $ type pip pip is $HOME/dbSQWare/SQWarePredict/python/SQWarePredict-python-env-3.12.8/bin/pip

dbsqware@vmsqwarebox:$HOME $ python --version Python 3.12.8

dbsqware@vmsqwarebox:$HOME $ pip --version pip 24.3.1 from $HOME/dbSQWare/SQWarePredict/python/SQWarePredict-python-env-3.12.8/lib/python3.12/site-packages/pip (python 3.12)

</syntaxhighlight>

<syntaxhighlight lang="sh" line> (SQWarePredict-python-env-3.12.8) dbsqware@srvdbsqware04:$HOME $ pip list

Package Version


-------

pip 24.3.1

</syntaxhighlight>

Installation des dépendances

Attention, il faut avoir activé l'environnement "SQWarePredict-python-env" !

<syntaxhighlight lang="sh" line>

  1. Activation de l'env (si pas déjà fait !)

. $HOME/dbSQWare/SQWarePredict/python/SQWarePredict-python-env/bin/activate </syntaxhighlight>

Installation des dépendances avec accès internet

<syntaxhighlight lang="sh" line>

  1. Dépendances pip

(SQWarePredict-python-env-3.12.8) dbsqware@srvdbsqware04:$HOME/dbSQWare/SQWarePredict/python $ pip install --upgrade pip setuptools wheel </syntaxhighlight>

Requirement already satisfied: pip in ./SQWarePredict-python-env-3.12.8/lib/python3.12/site-packages (24.3.1)
Collecting setuptools
  Downloading setuptools-75.8.0-py3-none-any.whl.metadata (6.7 kB)
Collecting wheel
  Downloading wheel-0.45.1-py3-none-any.whl.metadata (2.3 kB)
Downloading setuptools-75.8.0-py3-none-any.whl (1.2 MB)
   ???????????????????????????????????????? 1.2/1.2 MB 14.4 MB/s eta 0:00:00
Downloading wheel-0.45.1-py3-none-any.whl (72 kB)
Installing collected packages: wheel, setuptools, pip
  Attempting uninstall: pip
    Found existing installation: pip 24.3.1
    Uninstalling pip-24.3.1:
      Successfully uninstalled pip-24.3.1
Successfully installed pip-25.0.1 setuptools-75.8.0 wheel-0.45.1

<syntaxhighlight lang="sh" line>

  1. Install dependances

cd $HOME/dbSQWare/SQWarePredict/engine/ pip install .

</syntaxhighlight>

Processing $HOME/dbSQWare/SQWarePredict/engine
  Installing build dependencies ... done
  Getting requirements to build wheel ... done
  Preparing metadata (pyproject.toml) ... done
Collecting contourpy==1.3.1 (from SQWarePredict==1.0)
....
....
  Stored in directory: /tmp/pip-ephem-wheel-cache-l9urxsek/wheels/fb/0f/e3/8209d088cd9c825dd311fd9cbf83a320192744186bdc99b5ec
Successfully built SQWarePredict
Installing collected packages: pytz, tzdata, toml, six, python-dotenv, pyparsing, pillow, packaging, numpy, mysql-connector-python, kiwisolver, fonttools, cycler, scipy, python-dateutil, patsy, contourpy, pandas, matplotlib, statsmodels, seaborn, SQWarePredict
Successfully installed SQWarePredict-1.0 contourpy-1.3.1 cycler-0.12.1 fonttools-4.55.3 kiwisolver-1.4.8 matplotlib-3.10.0 mysql-connector-python-9.1.0 numpy-2.2.1 packaging-24.2 pandas-2.2.3 patsy-1.0.1 pillow-11.1.0 pyparsing-3.2.1 python-dateutil-2.9.0.post0 python-dotenv-1.0.1 pytz-2024.2 scipy-1.15.0 seaborn-0.13.2 six-1.17.0 statsmodels-0.14.4 toml-0.10.2 tzdata-2024.2

Installation des dépendances sans accès internet

<syntaxhighlight lang="sh" line>

  1. Dépendances pip

(SQWarePredict-python-env-3.12.8) dbsqware@srvdbsqware04:$HOME/dbSQWare/SQWarePredict/python $ pip install --no-index --find-links=$HOME/dbSQWare/SQWarePredict/python-src/LocalPipPackages_SQWarePredict --upgrade pip setuptools wheel </syntaxhighlight>

Looking in links: /home/dbsqware/dbSQWare/SQWarePredict/python-src/LocalPipPackages_SQWarePredict
Requirement already satisfied: pip in ./SQWarePredict-python-env-3.12.8/lib/python3.12/site-packages (24.3.1)
Processing /home/dbsqware/dbSQWare/SQWarePredict/python-src/LocalPipPackages_SQWarePredict/pip-25.0.1-py3-none-any.whl
Processing /home/dbsqware/dbSQWare/SQWarePredict/python-src/LocalPipPackages_SQWarePredict/setuptools-75.8.0-py3-none-any.whl
Processing /home/dbsqware/dbSQWare/SQWarePredict/python-src/LocalPipPackages_SQWarePredict/wheel-0.45.1-py3-none-any.whl
Installing collected packages: wheel, setuptools, pip
  Attempting uninstall: pip
    Found existing installation: pip 24.3.1
    Uninstalling pip-24.3.1:
      Successfully uninstalled pip-24.3.1
Successfully installed pip-25.0.1 setuptools-75.8.0 wheel-0.45.1

<syntaxhighlight lang="sh" line>

  1. Install dependances

cd $HOME/dbSQWare/SQWarePredict/engine/ pip install --no-index --find-links=$HOME/dbSQWare/SQWarePredict/python-src/LocalPipPackages_SQWarePredict -r $HOME/dbSQWare/SQWarePredict/python-src/requirements.txt

</syntaxhighlight>

Looking in links: /home/dbsqware/dbSQWare/SQWarePredict/python-src/LocalPipPackages_SQWarePredict
Processing /home/dbsqware/dbSQWare/SQWarePredict/python-src/LocalPipPackages_SQWarePredict/contourpy-1.3.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (from -r /home/dbsqware/dbSQWare/SQWarePredict/python-src/requirements.txt (line 1))
Processing /home/dbsqware/dbSQWare/SQWarePredict/python-src/LocalPipPackages_SQWarePredict/cycler-0.12.1-py3-none-any.whl (from -r /home/dbsqware/dbSQWare/SQWarePredict/python-src/requirements.txt (line 2))
Processing /home/dbsqware/dbSQWare/SQWarePredict/python-src/LocalPipPackages_SQWarePredict/fonttools-4.55.3-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (from -r /home/dbsqware/dbSQWare/SQWarePredict/python-src/requirements.txt (line 3))
...
...
Processing /home/dbsqware/dbSQWare/SQWarePredict/python-src/LocalPipPackages_SQWarePredict/toml-0.10.2-py2.py3-none-any.whl (from -r /home/dbsqware/dbSQWare/SQWarePredict/python-src/requirements.txt (line 21))
Processing /home/dbsqware/dbSQWare/SQWarePredict/python-src/LocalPipPackages_SQWarePredict/tzdata-2024.2-py2.py3-none-any.whl (from -r /home/dbsqware/dbSQWare/SQWarePredict/python-src/requirements.txt (line 22))
Requirement already satisfied: wheel>=0.45.1 in ./SQWarePredict-python-env-3.12.8/lib/python3.12/site-packages (from -r /home/dbsqware/dbSQWare/SQWarePredict/python-src/requirements.txt (line 23)) (0.45.1)
Requirement already satisfied: pip>=24.3.1 in ./SQWarePredict-python-env-3.12.8/lib/python3.12/site-packages (from -r /home/dbsqware/dbSQWare/SQWarePredict/python-src/requirements.txt (line 24)) (25.0.1)
Installing collected packages: pytz, tzdata, toml, six, python-dotenv, pyparsing, pillow, packaging, numpy, mysql-connector-python, kiwisolver, fonttools, cycler, scipy, python-dateutil, patsy, contourpy, pandas, matplotlib, statsmodels, seaborn
Successfully installed contourpy-1.3.1 cycler-0.12.1 fonttools-4.55.3 kiwisolver-1.4.8 matplotlib-3.10.0 mysql-connector-python-9.1.0 numpy-2.2.1 packaging-24.2 pandas-2.2.3 patsy-1.0.1 pillow-11.1.0 pyparsing-3.2.1 python-dateutil-2.9.0.post0 python-dotenv-1.0.1 pytz-2024.2 scipy-1.15.0 seaborn-0.13.2 six-1.17.0 statsmodels-0.14.4 toml-0.10.2 tzdata-2024.2

Check des dépendances

<syntaxhighlight lang="sh" line>

  1. Check des dépendances

pip list

</syntaxhighlight>

Package                Version
---------------------- -----------
contourpy              1.3.1
cycler                 0.12.1
fonttools              4.55.3
kiwisolver             1.4.8
matplotlib             3.10.0
mysql-connector-python 9.1.0
numpy                  2.2.1
packaging              24.2
pandas                 2.2.3
patsy                  1.0.1
pillow                 11.1.0
pip                    25.0.1
pyparsing              3.2.1
python-dateutil        2.9.0.post0
python-dotenv          1.0.1
pytz                   2024.2
scipy                  1.15.0
seaborn                0.13.2
setuptools             75.8.0
six                    1.17.0
statsmodels            0.14.4
toml                   0.10.2
tzdata                 2024.2
wheel                  0.45.1

Paramétrer et tester SQWarePredict

Paramétrage de SQWarePredict

<syntaxhighlight lang="sh" line>

  1. Paramétrage des accès à la db (vous pouvez créer un nouveau compte ou utiliser celui de SQWareCentral !)

cd $HOME/dbSQWare/SQWarePredict/engine cat sqwarepredict.ini </syntaxhighlight>

# Credentials for SQWarePredict

[db]
MysqlHost="localhost"
MysqlUser="sqware_predict"
MysqlPass="SQWarePredict1234."
MysqlDb="dbsqware_db"
MysqlPort=3306

Test de fonctionnement

<syntaxhighlight lang="sh" line>

  1. Activation de l'env et test de 'Predict'

. $HOME/dbSQWare/SQWarePredict/python/SQWarePredict-python-env/bin/activate cd $HOME/dbSQWare/SQWarePredict/engine python -m bin.predict -i sql -f $HOME/dbSQWare/SQWarePredict/param/generic/InstanceGrowth_size.ini -l Instance=SQWareCentral NbMonth=24 -m 6

</syntaxhighlight>

Activer/désactiver l'environnement Python

<syntaxhighlight lang="sh" line>

  1. Activation de l'environnement Python

. $HOME/dbSQWare/SQWarePredict/python/SQWarePredict-python-env/bin/activate

    1. Vous avez (SQWarePredict-python-env-3.12.8) qui s'affiche avant le prompt !
  1. Désactivation de l'environnement Python (deactivate se déclare lors du source de l'env)

deactivate

    1. Vous retrouvez votre prompt d'origine

</syntaxhighlight>