Appendices:Python

From Wiki_dbSQWare
Jump to: navigation, search

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
# From : root@vmsqwarebox
## 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

# From : dbsqware@vmsqwarebox

mkdir -p $HOME/dbSQWare/SQWarePredict/python-src
mkdir -p $HOME/dbSQWare/SQWarePredict/python/3.12.8

Rsource recovery for an installation with internet access

Download the sources and put them in/tmp :

# 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

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 :

# From : dbsqware@vmsqwarebox

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

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

Build

cd $HOME/dbSQWare/SQWarePredict/python-src/Python-3.12.8

# configure, dest => $HOME/dbSQWare/SQWarePredict/python/3.12.8
./configure --prefix=$HOME/dbSQWare/SQWarePredict/python/3.12.8 --enable-optimizations
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

# compil
make
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'

# install
make install
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
# creation des liens python et pip
cd $HOME/dbSQWare/SQWarePredict/python/3.12.8/bin
ln -s python3 python
ln -s pip3 pip

Environnement update

Changes for ~dbsqware/.bash_profile

# 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


# on sourcve le .bash_profile
. $HOME/.bash_profile


# 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


# 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)


## 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


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)


(SQWarePredict-python-env-3.12.8) dbsqware@srvdbsqware04:$HOME $ pip list

Package Version
------- -------
pip     24.3.1

Installing dependencies

Please note, you must have activated the "SQWarePredict-python-env" environment !

#Enable the environment (if not already done!)
. $HOME/dbSQWare/SQWarePredict/python/SQWarePredict-python-env/bin/activate

Installation of dependencies with internet access

# dependencies pip
(SQWarePredict-python-env-3.12.8) dbsqware@srvdbsqware04:$HOME/dbSQWare/SQWarePredict/python $ pip install --upgrade pip setuptools wheel
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

# Installing dependencies
cd $HOME/dbSQWare/SQWarePredict/engine/
pip install .

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 of dependencies without internet access

# Dependancies 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
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

# Install dependancies
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

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

Dependancies check

# Check des dépendances
pip list

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

Setup and test SQWarePredict

Setup SQWarePredict

# Configuring access to the DB (you can create a new account or use the one from SQWareCentral!)
cd $HOME/dbSQWare/SQWarePredict/engine
cat sqwarepredict.ini

# Credentials for SQWarePredict

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

Test de SQWarePredict

# 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

Enable/Disable the Python environment

# Enable the Python environment
. $HOME/dbSQWare/SQWarePredict/python/SQWarePredict-python-env/bin/activate
## You have (SQWarePredict-python-env-3.12.8) which is displayed before the prompt !

# Disable the Python environment (deactivate is declared when sourcing the env)
deactivate
##You find your original prompt