[РЕШЕНО] Установка python-библиотек Pandas и др. в LO7 Calc (Windows)

Автор economist, 2 июня 2021, 09:31

0 Пользователи и 1 гость просматривают эту тему.

economist

Ничто не вечно в OSS. Скомпиленные либы никто на безопасность уже не проверит. Да и много ли умельцев читает весь открытый исходный код, с пониманием что он делает? Гуглеж дает:
https://www.cgohlke.com/

Тот же эффект раньше давал и pip install pipwin и установка библиотек в нем.


Руб. за сто, что Питоньяк
Любит водку и коньяк!
Потому что мне, без оных, -
Не понять его никак...

juceser

Pip установить для главного Питона удается, также там удается установить и pandas.
В LO имеются старые версии Питона python-core-3.10.16 (основная) и python-core-3.9.19 (только библиотеки).
На самом сайте питона они уже объявлены как устаревшие и embedded там нет. Я скопировал в program аналогично последнюю версию питона, но это ничего не дало.
При том что LO супер новый -
Version: 25.2.1.2 (X86_64) / LibreOffice Community
Build ID: d3abf4aee5fd705e4a92bba33a32f40bc4e56f49
CPU threads: 12; OS: Windows 10 X86_64 (10.0 build 19045); UI render: Skia/Raster; VCL: win
Locale: ru-RU (ru_RU); UI: ru-RU
Calc: threaded

Попытка обращаться именно к python в каталоге 3.10.16 через путь в команде не дает эффекта. pip не ставится и не ставит pandas. В какой-то момент pip вроде даже встал, но потом опять -

C:\Program Files\LibreOffice\program\python-core-3.10.16\bin>python -m pip install pandas
C:\Program Files\LibreOffice\program\python-core-3.10.16\bin\python.exe: No module named pip

При этом прямой запуск -

C:\Program Files\LibreOffice\program\python-core-3.10.16\bin>pip install pandas
Requirement already satisfied: pandas in c:\program files\python313\lib\site-packages (2.2.3)
Requirement already satisfied: numpy>=1.26.0 in c:\program files\python313\lib\site-packages (from pandas) (2.2.4)
Requirement already satisfied: python-dateutil>=2.8.2 in c:\program files\python313\lib\site-packages (from pandas) (2.9.0.post0)
Requirement already satisfied: pytz>=2020.1 in c:\program files\python313\lib\site-packages (from pandas) (2025.2)
Requirement already satisfied: tzdata>=2022.7 in c:\program files\python313\lib\site-packages (from pandas) (2025.2)
Requirement already satisfied: six>=1.5 in c:\program files\python313\lib\site-packages (from python-dateutil>=2.8.2->pandas) (1.17.0)

Говорит что pandas уже установлена.

Соответственно в модуле LO pandas не видна.

И как поступать?


economist

#62
Вам нужно разобраться с тем какой питон вызывается по умолчанию:

where python

Или привыкнуть всегда указывать его явно:

С:\Python\python.exe -m pip ...

Быть в нужной папке - недостаточно. В LO полно "заглушек" которые делают что-то непонятное.
Поэтому всегда пишите полный путь в BAT-файлах (проще переписывать). Установка либ в LO Python воpможно даже стала теперь проще, но очень легко запутаться в версиях и путях.

На сайте python есть все старые версии, просто там их непросто найти среди "патчей". Необязательно искать встройку, можно взять из обычной версии (встройку проще открыть как архив).   

 
Руб. за сто, что Питоньяк
Любит водку и коньяк!
Потому что мне, без оных, -
Не понять его никак...

juceser

Да, указываю и явно -

C:\Program Files\LibreOffice\program\python-core-3.10.16\bin>"C:\Program Files\LibreOffice\program\python-core-3.10.16\bin\python" -m pip install pandas
C:\Program Files\LibreOffice\program\python-core-3.10.16\bin\python.exe: No module named pip

При этом get-pip.py лежит прямо в bin.

Тот же результат.

juceser

При этом еще раз повторил -

C:\Program Files\LibreOffice\program>py get-pip.py
Collecting pip
  Using cached pip-25.0.1-py3-none-any.whl.metadata (3.7 kB)
Using cached pip-25.0.1-py3-none-any.whl (1.8 MB)
Installing collected packages: pip
  Attempting uninstall: pip
    Found existing installation: pip 25.0.1
    Uninstalling pip-25.0.1:
      Successfully uninstalled pip-25.0.1
Successfully installed pip-25.0.1

C:\Program Files\LibreOffice\program>"C:\Program Files\LibreOffice\program\python-core-3.10.16\bin\python" -m pip install pandas
C:\Program Files\LibreOffice\program\python-core-3.10.16\bin\python.exe: No module named pip

economist

get-pip.py может лежать хоть на флешке, он нужен только для устновки pip.
Полный путь д.б. и к python.exe, и к скрипту/модулю. Ненахождение pip говорит о том что вы его установили для другого интерпретатора. Поищите папку pandas и файл pip.exe на всем диске, станет понятнее.   

Что выдает where pip ?
Руб. за сто, что Питоньяк
Любит водку и коньяк!
Потому что мне, без оных, -
Не понять его никак...

economist

#66
Полные пути это скучно, но путаница с 2-3-мя питонами - системным, свежим и LO Python - может достать кого угодно.

Поэтому предлагаю "промышленный путь", который одинаково работает и в Windows, и в Linux, поскольку использует одинаковое и очень популярное кроссплатформенное приложение для почти всех архитектур процессоров - FarManager. Это +400% к скорости файловых операций и -80% непоняток с консолью и пакетами Python. FAR запускает свою версию командной оболочки, это хорошо для новичка, но плохо для опытного питониста, использующего виртуальные окружения с разным набором либ, но об этом как-нить потом. Сейчас нам надо установить без полных путей Pandas в любой LO с 4-й по 25+ версию, погнали!

Магии тут нет, большинство файловых операций это "откуда и куда", а значит 2-х панельные файловые менеджеры удобнее всяких однооконных Проводников. Горячие клавиши делают команды "механически запоминанемымии", как на военных учениях: "F5 - ракета пошла, F6 - ракета вернулась на стапель". Итак:


1) Ставим https://farmanager.com, в нем F9 - Options - Lang - Russian - Russian - Shift+F9 (сохранить параметры). Ярлык вытащить на Рабстол и назначить "дикое" сочетание типа Alt+Shift+F9 (чтобы ни с каким прикладным ПО не совпасть до Второго пришествия или 2142 года).

2) Кидаем в ...LibreOffice/program файл get-pip.py Кроме папки program в LO нам в целях питон возни не нужно ничего.

3) Запускаем FAR и заходим в папку с LibreOffice/program, гасим панели Ctrl+O и там печатаем или вставляем и выполняем построчно (с погашенными панелями у вас полноценная Консоль, есть авто-дополнение и история команд по стрелкам):   

python.exe -m get-pip

python.exe -m pip install pandas

python  # запустили змея

import pandas  # не должно быть ошибок, просто >>

И, о чудо, модуль pandas установился в LO Python в две короткие команды (другие две - проверка импорта).
Руб. за сто, что Питоньяк
Любит водку и коньяк!
Потому что мне, без оных, -
Не понять его никак...

juceser

Первые 2 шага сделано.

На 3 шаге ошибка.


juceser


economist

Надо
Цитата: economist от  2 апреля 2025, 08:37python.exe -m get-pip

а не python.exe -m get-pip.py, об этом вам написано в скрине. К файлам py-модулям обращаются в python не указывая расширение имени файла.


Руб. за сто, что Питоньяк
Любит водку и коньяк!
Потому что мне, без оных, -
Не понять его никак...

juceser

Другая ошибка, всплывающее окно python.exe не является приложением Win32.

juceser

Помогло обращение с точным путем к exe python -

C:\Program Files\LibreOffice\program>python.exe -m get-pip
Отказано в доступе.

C:\Program Files\LibreOffice\program>"C:\Program Files\LibreOffice\program\python-core-3.10.16\bin\python" -m get-pip
Collecting pip
  Using cached pip-25.0.1-py3-none-any.whl.metadata (3.7 kB)
Collecting setuptools
  Using cached setuptools-78.1.0-py3-none-any.whl.metadata (6.6 kB)
Collecting wheel
  Downloading wheel-0.45.1-py3-none-any.whl.metadata (2.3 kB)
Using cached pip-25.0.1-py3-none-any.whl (1.8 MB)
Using cached setuptools-78.1.0-py3-none-any.whl (1.3 MB)
Downloading wheel-0.45.1-py3-none-any.whl (72 kB)
Installing collected packages: wheel, setuptools, pip
  WARNING: The script wheel.exe is installed in 'C:\Program Files\LibreOffice\program\python-core-3.10.16\Scripts' which is not on PATH.
  Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.
  WARNING: The scripts pip.exe, pip3.10.exe and pip3.exe are installed in 'C:\Program Files\LibreOffice\program\python-core-3.10.16\Scripts' 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-25.0.1 setuptools-78.1.0 wheel-0.45.1

economist

Странно, в свежеустановленном LO у меня всё наоборот: в папке bin заглушка python.exe, запустить ее невозможно (не является приложением Win32), а вот в program - нормальный экзешник. В любом случае рад что решение найдено.

FAR все равно рекомендую освоить, в т.ч. для работы с пакетами и мелкой правки py-кода (и вообще всего), т.к. как кодировку после открытия файла можно сменить на любую. По F4 FAR откроет файл с подсветкой синтаксиса, парносттью скобок, тегов итд.

Если придется ставить много крутых модных либ и часто запускать py-скрипты из BAT-файлов (частая практика) - то стоит освоить виртуальные окружения (venv). С ними у вас появится много-много разных экз python.exe (у меня их под сотню). И в каждом окружении - свой набор либ, не мешающий другим окружениями. Иногда это все ради "посмотреть" что там за новый ИИ-агент появился. Важно в этом не путаться.

Сберегу вам пару часов в будущем. Минимальный Bat-файл для активации нужного окружения Test и запуска нужного скрипта run.py, лежащих в разных папках, выглядят так:

REM Файл D:\Запуск.bat
chcp 65001
cd "C:\Test"
call "C:\Test\Scripts\activate.bat"
call "C:\Folder\run.py"
Руб. за сто, что Питоньяк
Любит водку и коньяк!
Потому что мне, без оных, -
Не понять его никак...

juceser

Итак после загрузки Питона работа пошла споро. В двух окнах cmd. В одно по очереди добавлял команды Питона, в другом инсталлировал отсутствующие библиотеки, когда Питон ругался.

Итак вывод Питона на все команды.



C:\Program Files\LibreOffice\program>"C:\Program Files\LibreOffice\program\python-core-3.10.16\bin\python"
Python 3.10.0 (tags/v3.10.0:b494f59, Oct  4 2021, 19:00:18) [MSC v.1929 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import pandas
>>> import math
>>> import numpy as np
>>> import pandas as pd
>>> import matplotlib.pyplot as plt
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ModuleNotFoundError: No module named 'matplotlib'
>>> import matplotlib.pyplot as plt
>>> import matplotlib.colors as mcolors
>>> import plotly.graph_objects as go
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ModuleNotFoundError: No module named 'plotly'
>>> import plotly.graph_objects as go
>>> def y(x):
...     return 2*math.exp(-0.5*x) + 3.5*math.cos(x)**3 / (x**2+1)
... def g(x):
  File "<stdin>", line 3
    def g(x):
    ^^^
SyntaxError: invalid syntax
>>>     return (x**2+5*x+1.5) ** (1/3) if x>0 else math.sqrt(abs(x-0.2))
  File "<stdin>", line 1
    return (x**2+5*x+1.5) ** (1/3) if x>0 else math.sqrt(abs(x-0.2))
IndentationError: unexpected indent
>>>
>>> def z(x):
...     return math.log(2-x) if x<-1 else (math.log(2.5*x+0.3)
...                                        if x>0 else math.cos(x+2))
...
>>>
>>>
>>> def y(x):
...     return 2*math.exp(-0.5*x) + 3.5*math.cos(x)**3 / (x**2+1)
...
>>> def g(x):
...     return (x**2+5*x+1.5) ** (1/3) if x>0 else math.sqrt(abs(x-0.2))
...
>>> def z(x):
...     return math.log(2-x) if x<-1 else (math.log(2.5*x+0.3)
...                                        if x>0 else math.cos(x+2))
...
>>>
>>> x0, xk, dx = -1.7, 1.9, 0.2
>>> n = round((xk-x0)/dx) + 1
>>> print(f"Начальное значение x0 = {x0}, конечное значение xk = {xk}, шаг dx = {dx}")
Начальное значение x0 = -1.7, конечное значение xk = 1.9, шаг dx = 0.2
>>> print(f"Число значений n = {n}")
Число значений n = 19
>>> df = pd.DataFrame(columns=['x', 'y', 'g', 'z'])
>>> for i in range(n):
...     x = x0 + i*dx
...     df.loc[len(df.index)] = [x, y(x), g(x), z(x)]
...
>>>
>>> df.info()
<class 'pandas.core.frame.DataFrame'>
Index: 19 entries, 0 to 18
Data columns (total 4 columns):
 #   Column  Non-Null Count  Dtype
---  ------  --------------  -----
 0   x       19 non-null     float64
 1   y       19 non-null     float64
 2   g       19 non-null     float64
 3   z       19 non-null     float64
dtypes: float64(4)
memory usage: 760.0 bytes
>>> df.head()
     x         y         g         z
0 -1.7  4.677369  1.378405  1.308333
1 -1.5  4.234381  1.303840  1.252763
2 -1.3  3.855986  1.224745  1.193922
3 -1.1  3.614309  1.140175  1.131402
4 -0.9  3.601079  1.048809  0.453596
>>> df.tail()
      x         y         g         z
14  1.1  1.301703  2.017349  1.115142
15  1.3  1.068996  2.131938  1.266948
16  1.5  0.945114  2.240702  1.398717
17  1.7  0.852905  2.344684  1.515127
18  1.9  0.747829  2.444650  1.619388
>>> df.style.background_gradient(cmap='Blues', axis=0).format("{:.3f}")
Traceback (most recent call last):
  File "C:\Program Files\LibreOffice\program\python-core-3.10.16\lib\site-packages\pandas\compat\_optional.py", line 135, in import_optional_dependency
    module = importlib.import_module(name)
  File "C:\Program Files\LibreOffice\program\python-core-3.10.16\lib\importlib\__init__.py", line 126, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 1050, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1027, in _find_and_load
  File "<frozen importlib._bootstrap>", line 1004, in _find_and_load_unlocked
ModuleNotFoundError: No module named 'jinja2'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:\Program Files\LibreOffice\program\python-core-3.10.16\lib\site-packages\pandas\core\frame.py", line 1442, in style
    from pandas.io.formats.style import Styler
  File "C:\Program Files\LibreOffice\program\python-core-3.10.16\lib\site-packages\pandas\io\formats\style.py", line 44, in <module>
    jinja2 = import_optional_dependency("jinja2", extra="DataFrame.style requires jinja2.")
  File "C:\Program Files\LibreOffice\program\python-core-3.10.16\lib\site-packages\pandas\compat\_optional.py", line 138, in import_optional_dependency
    raise ImportError(msg)
ImportError: Missing optional dependency 'Jinja2'. DataFrame.style requires jinja2. Use pip or conda to install Jinja2.
>>> df.style.background_gradient(cmap='Blues', axis=0).format("{:.3f}")
<pandas.io.formats.style.Styler object at 0x0000027FFD5D8700>
>>> with plt.style.context('ggplot'):
...     fig, (ax1, ax2, ax3) = plt.subplots(3, figsize=(6, 8), tight_layout=True)
...     fig.suptitle('Графики трех функций')
...     ax1.plot(df.x, df.y, color='coral')
...     ax2.plot(df.x, df.g, color='lightseagreen')
...     ax3.plot(df.x, df.z, color='cornflowerblue')
...     ax1.set(ylabel=r'$y(x)$')
...     ax2.set(ylabel=r'$g(x)$')
...     ax3.set(ylabel=r'$z(x)$')
...     ax3.set(xlabel=r'$x$')
...
Text(0.5, 0.98, 'Графики трех функций')
[<matplotlib.lines.Line2D object at 0x0000027F8025BA90>]
[<matplotlib.lines.Line2D object at 0x0000027F8025BEB0>]
[<matplotlib.lines.Line2D object at 0x0000027F80280310>]
[Text(0, 0.5, '$y(x)$')]
[Text(0, 0.5, '$g(x)$')]
[Text(0, 0.5, '$z(x)$')]
[Text(0.5, 0, '$x$')]
>>> plt.show()
<stdin>:1: UserWarning: FigureCanvasAgg is non-interactive, and thus cannot be shown
>>> def y1(x):
...     return 2*math.sin(3*math.pi*x)**2 * math.cos(math.pi*x)
... def z1(x):
  File "<stdin>", line 3
    def z1(x):
    ^^^
SyntaxError: invalid syntax
>>>     return 3*math.sin(math.pi*x)**3 * math.cos(4*math.pi*x)**2
  File "<stdin>", line 1
    return 3*math.sin(math.pi*x)**3 * math.cos(4*math.pi*x)**2
IndentationError: unexpected indent
>>>
>>>
>>>
>>> def y1(x):
...     return 2*math.sin(3*math.pi*x)**2 * math.cos(math.pi*x)
...
>>> def z1(x):
...     return 3*math.sin(math.pi*x)**3 * math.cos(4*math.pi*x)**2
...
>>> df1 = pd.DataFrame(columns=['x', 'y', 'z'])
>>>
>>> for i in range(n):
...     x = x0 + i*dx
...     df1.loc[len(df1.index)] = [x, y1(x), z1(x)]
...
>>> df1.style.background_gradient(cmap='Blues', axis=0).format("{:.3f}")
<pandas.io.formats.style.Styler object at 0x0000027F8014F6D0>
>>> with plt.style.context('ggplot'):
...     plt.figure(figsize=(8, 4))
...     plt.suptitle('График двух функций')
...     plt.plot(df1.x, df1.y, label=r'$y(x)$')
...     plt.plot(df1.x, df1.z, label=r'$z(x)$')
...     plt.xlabel(r'$x$', fontsize=12)
...     plt.ylabel(r'$f(x)$', fontsize=12)
...     plt.legend(loc='best', fontsize=10);
...
<Figure size 800x400 with 0 Axes>
Text(0.5, 0.98, 'График двух функций')
[<matplotlib.lines.Line2D object at 0x0000027F802A1B40>]
[<matplotlib.lines.Line2D object at 0x0000027F802A1F60>]
Text(0.5, 0, '$x$')
Text(0, 0.5, '$f(x)$')
<matplotlib.legend.Legend object at 0x0000027F802A1D20>
>>> plt.show()
<stdin>:1: UserWarning: FigureCanvasAgg is non-interactive, and thus cannot be shown
>>> from scipy.interpolate import make_interp_spline
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ModuleNotFoundError: No module named 'scipy'
>>> from scipy.interpolate import make_interp_spline
>>> X_Y_Spline = make_interp_spline(df1.x, df1.y)
>>> X_Z_Spline = make_interp_spline(df1.x, df1.z)
>>> X_ = np.linspace(df1.x.min(), df1.x.max(), 100)
>>> Y_ = X_Y_Spline(X_)
>>> Z_ = X_Z_Spline(X_)
>>> with plt.style.context('ggplot'):
...     plt.figure(figsize=(8, 4))
...     plt.suptitle('Сглаженный график двух функций')
...     plt.plot(X_, Y_, label=r'$y(x)$')
...     plt.plot(X_, Z_, label=r'$z(x)$')
...     plt.xlabel(r'$x$', fontsize=12)
...     plt.ylabel(r'$f(x)$', fontsize=12)
...     plt.legend(loc='best', fontsize=10);
...
<Figure size 800x400 with 0 Axes>
Text(0.5, 0.98, 'Сглаженный график двух функций')
[<matplotlib.lines.Line2D object at 0x0000027F96C6C5E0>]
[<matplotlib.lines.Line2D object at 0x0000027F96C6D720>]
Text(0.5, 0, '$x$')
Text(0, 0.5, '$f(x)$')
<matplotlib.legend.Legend object at 0x0000027F96C527D0>
>>> plt.show()
<stdin>:1: UserWarning: FigureCanvasAgg is non-interactive, and thus cannot be shown
>>> def xyz(x, y):
...     return 2*x**2 - y**2
...
>>> x0, xk, dx = -1, 1, 0.2
>>> y0, yk, dy = -1, 1, 0.2
>>> nx = round((xk-x0)/dx) + 1
>>> ny = round((yk-y0)/dy) + 1
>>> u, v = np.mgrid[x0:xk:nx*1j, y0:yk:ny*1j]
>>> z3 = xyz(u, v)
>>> fig = plt.figure()
>>> plt.suptitle('Поверхность')
Text(0.5, 0.98, 'Поверхность')
>>> ax = fig.add_subplot(111, projection='3d')
>>> ax.plot_surface(u, v, z3, cmap='inferno');
<mpl_toolkits.mplot3d.art3d.Poly3DCollection object at 0x0000027F96CBF2B0>
>>> plt.show()
>>> fig = go.Figure(data=[go.Surface(z=z3, x=u, y=v, colorscale ='Oranges') ])
>>> ar = 1
>>> fig.update_layout(scene=dict(xaxis=dict( title="x"),
...                              yaxis=dict( title="y"),
...                              zaxis=dict(title="z"),
...                    aspectratio={
...                                 **{"x": 1.2*ar},
...                                 **{"y": 1.2*ar},
...                                 **{"z": 1.2*ar},
...                                 },
...                     aspectmode="manual",),)
Figure({
    'data': [{'colorscale': [[0.0, 'rgb(255,245,235)'], [0.125,
                             'rgb(254,230,206)'], [0.25, 'rgb(253,208,162)'],
                             [0.375, 'rgb(253,174,107)'], [0.5, 'rgb(253,141,60)'],
                             [0.625, 'rgb(241,105,19)'], [0.75, 'rgb(217,72,1)'],
                             [0.875, 'rgb(166,54,3)'], [1.0, 'rgb(127,39,4)']],
              'type': 'surface',
              'x': {'bdata': ('AAAAAAAA8L8AAAAAAADwvwAAAAAAAP' ... 'AAAADwPwAAAAAAAPA/AAAAAAAA8D8='),
                    'dtype': 'f8',
                    'shape': '11, 11'},
              'y': {'bdata': ('AAAAAAAA8L+amZmZmZnpvzMzMzMzM+' ... 'MzMzPjP5qZmZmZmek/AAAAAAAA8D8='),
                    'dtype': 'f8',
                    'shape': '11, 11'},
              'z': {'bdata': ('AAAAAAAA8D/C9Shcj8L1Pz4K16NwPf' ... 'ejcD36P8L1KFyPwvU/AAAAAAAA8D8='),
                    'dtype': 'f8',
                    'shape': '11, 11'}}],
    'layout': {'scene': {'aspectmode': 'manual',
                         'aspectratio': {'x': 1.2, 'y': 1.2, 'z': 1.2},
                         'xaxis': {'title': {'text': 'x'}},
                         'yaxis': {'title': {'text': 'y'}},
                         'zaxis': {'title': {'text': 'z'}}},
               'template': '...'}
})
>>> fig.show()
>>>


juceser

Инсталляция недостающих пакетов во 2ом окне -


C:\Windows\System32>"C:\Program Files\LibreOffice\program\python-core-3.10.16\bin\python" -m pip install matplotlib
Collecting matplotlib
  Downloading matplotlib-3.10.1-cp310-cp310-win_amd64.whl.metadata (11 kB)
Collecting contourpy>=1.0.1 (from matplotlib)
  Downloading contourpy-1.3.1-cp310-cp310-win_amd64.whl.metadata (5.4 kB)
Collecting cycler>=0.10 (from matplotlib)
  Using cached cycler-0.12.1-py3-none-any.whl.metadata (3.8 kB)
Collecting fonttools>=4.22.0 (from matplotlib)
  Downloading fonttools-4.57.0-cp310-cp310-win_amd64.whl.metadata (104 kB)
Collecting kiwisolver>=1.3.1 (from matplotlib)
  Downloading kiwisolver-1.4.8-cp310-cp310-win_amd64.whl.metadata (6.3 kB)
Requirement already satisfied: numpy>=1.23 in c:\program files\libreoffice\program\python-core-3.10.16\lib\site-packages (from matplotlib) (2.2.4)
Collecting packaging>=20.0 (from matplotlib)
  Using cached packaging-24.2-py3-none-any.whl.metadata (3.2 kB)
Collecting pillow>=8 (from matplotlib)
  Downloading pillow-11.1.0-cp310-cp310-win_amd64.whl.metadata (9.3 kB)
Collecting pyparsing>=2.3.1 (from matplotlib)
  Using cached pyparsing-3.2.3-py3-none-any.whl.metadata (5.0 kB)
Requirement already satisfied: python-dateutil>=2.7 in c:\program files\libreoffice\program\python-core-3.10.16\lib\site-packages (from matplotlib) (2.9.0.post0)
Requirement already satisfied: six>=1.5 in c:\program files\libreoffice\program\python-core-3.10.16\lib\site-packages (from python-dateutil>=2.7->matplotlib) (1.17.0)
Downloading matplotlib-3.10.1-cp310-cp310-win_amd64.whl (8.1 MB)
   ---------------------------------------- 8.1/8.1 MB 9.1 MB/s eta 0:00:00
Downloading contourpy-1.3.1-cp310-cp310-win_amd64.whl (218 kB)
Using cached cycler-0.12.1-py3-none-any.whl (8.3 kB)
Downloading fonttools-4.57.0-cp310-cp310-win_amd64.whl (2.2 MB)
   ---------------------------------------- 2.2/2.2 MB 7.8 MB/s eta 0:00:00
Downloading kiwisolver-1.4.8-cp310-cp310-win_amd64.whl (71 kB)
Using cached packaging-24.2-py3-none-any.whl (65 kB)
Downloading pillow-11.1.0-cp310-cp310-win_amd64.whl (2.6 MB)
   ---------------------------------------- 2.6/2.6 MB 7.2 MB/s eta 0:00:00
Using cached pyparsing-3.2.3-py3-none-any.whl (111 kB)
Installing collected packages: pyparsing, pillow, packaging, kiwisolver, fonttools, cycler, contourpy, matplotlib
  WARNING: The scripts fonttools.exe, pyftmerge.exe, pyftsubset.exe and ttx.exe are installed in 'C:\Program Files\LibreOffice\program\python-core-3.10.16\Scripts' 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 contourpy-1.3.1 cycler-0.12.1 fonttools-4.57.0 kiwisolver-1.4.8 matplotlib-3.10.1 packaging-24.2 pillow-11.1.0 pyparsing-3.2.3

C:\Windows\System32>"C:\Program Files\LibreOffice\program\python-core-3.10.16\bin\python" -m pip install plotly
Collecting plotly
  Downloading plotly-6.0.1-py3-none-any.whl.metadata (6.7 kB)
Collecting narwhals>=1.15.1 (from plotly)
  Downloading narwhals-1.33.0-py3-none-any.whl.metadata (9.2 kB)
Requirement already satisfied: packaging in c:\program files\libreoffice\program\python-core-3.10.16\lib\site-packages (from plotly) (24.2)
Downloading plotly-6.0.1-py3-none-any.whl (14.8 MB)
   ---------------------------------------- 14.8/14.8 MB 9.5 MB/s eta 0:00:00
Downloading narwhals-1.33.0-py3-none-any.whl (322 kB)
Installing collected packages: narwhals, plotly
Successfully installed narwhals-1.33.0 plotly-6.0.1

C:\Windows\System32>"C:\Program Files\LibreOffice\program\python-core-3.10.16\bin\python" -m pip install jinja2
Collecting jinja2
  Downloading jinja2-3.1.6-py3-none-any.whl.metadata (2.9 kB)
Collecting MarkupSafe>=2.0 (from jinja2)
  Downloading MarkupSafe-3.0.2-cp310-cp310-win_amd64.whl.metadata (4.1 kB)
Downloading jinja2-3.1.6-py3-none-any.whl (134 kB)
Downloading MarkupSafe-3.0.2-cp310-cp310-win_amd64.whl (15 kB)
Installing collected packages: MarkupSafe, jinja2
Successfully installed MarkupSafe-3.0.2 jinja2-3.1.6

C:\Windows\System32>"C:\Program Files\LibreOffice\program\python-core-3.10.16\bin\python" -m pip install scipy
Collecting scipy
  Downloading scipy-1.15.2-cp310-cp310-win_amd64.whl.metadata (60 kB)
Requirement already satisfied: numpy<2.5,>=1.23.5 in c:\program files\libreoffice\program\python-core-3.10.16\lib\site-packages (from scipy) (2.2.4)
Downloading scipy-1.15.2-cp310-cp310-win_amd64.whl (41.2 MB)
   ---------------------------------------- 41.2/41.2 MB 10.8 MB/s eta 0:00:00
Installing collected packages: scipy
Successfully installed scipy-1.15.2

C:\Windows\System32>