Open main menu

DAVE Developer's Wiki β

Changes

DESK-XZ7-L-AN-0004: Using Python with BORA

4,743 bytes removed, 30 January
no edit summary
| Oct 2022
|DESK-XZ7-L 1.0.0-rc1
|-
! 1.0.1
! Jan 2024
!DESK-XZ7-L 1.0.1
|-
|}
</pre>
<code>pip3</code> version can be upgraded tooinstalled using python and the related script [https://pip.pypa.io/en/stable/installation/#get-pip-py <code>get-pip-py</code>]:
<pre class="board-terminal">
root@bora:~# pip3 wget https://bootstrap.pypa.io/get-pip.pyConnecting to bootstrap.pypa.io (151.101.0.175:443)wget: note: TLS certificate validation not implementedsaving to 'get-versionpip.py'get-pip 20.py 100% |********************************************************************************************| 2573k 0.2 from /usr/lib/python3.8/site:00:00 ETA'get-packages/pip (python 3.8)py' savedroot@bora:~# pip3 install python3 get--upgrade pip.py
Collecting pip
Downloading pip-2223.3.2-py3-none-any.whl.metadata (3.5 kB)Collecting setuptools Downloading setuptools-69.0.3-py3-none-any.whl.metadata (6.3 kB)Collecting wheel Downloading wheel-0.42.0-py3-none-any.whl.metadata (2.2 kB)Downloading pip-23.3.2-py3-none-any.whl (2.1 MB) |████████████████████████████████| 2.1/2.1 MB 2.1 MB 289 /s eta 0:00:00Downloading setuptools-69.0.3-py3-none-any.whl (819 kB) |████████████████████████████████ 819.5/819.5 kB1.9 MB/s eta 0:00:00Downloading wheel-0.42.0-py3-none-any.whl (65 kB)Installing collected packages |████████████████████████████████ 65.4/65.4 kB 427.3 kB/s eta 0: pip Attempting uninstall00: pip00 Found existing installationDEPRECATION: pip 20gpg 1.14.0-unknown has a non-standard version number.2 Uninstalling pip-2024.0will enforce this behaviour change.2A possible replacement is to upgrade to a newer version of gpg or contact the author to suggest that they release a version with a conforming version number. Discussion can be found at https://github.com/pypa/pip/issues/12063Installing collected packages:wheel, setuptools, pip Successfully uninstalled installed pip-2023.3.2 setuptools-69.0.3 wheel-0.242.0Successfully installed WARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: https://pip-22.3pypa.io/warnings/venv
root@bora:~#
</pre>
* then, pip version can be checked
<pre class="board-terminal">
root@bora:~# pip3 --version
pip 23.3.2 from /usr/lib/python3.8/site-packages/pip (python 3.8)
root@bora:~#
</pre>
root@bora:~# python3 -m pip install --user virtualenv
Collecting virtualenv
Downloading virtualenv-20.1625.50-py3-none-any.whl .metadata (84.5 kB)Collecting distlib<1,>=0.3.8 MB7 (from virtualenv) |████████████████████████████████| Downloading distlib-0.3.8-py2.8/8py3-none-any.8 MB 2whl.metadata (5 MB/s eta 0:00:00.1 kB)Collecting filelock<4,>=3.412.12 (from virtualenv) Downloading filelock-3.813.01-py3-none-any.whl .metadata (10 2.8 kB)Collecting distlibplatformdirs<15,>=3.9.1 (from virtualenv) Downloading platformdirs-4.1.0-py3-none-any.whl.metadata (11 kB)Downloading virtualenv-20.25.0-py3-none-any.whl (3.58 MB) |████████████████████████████████ 3.8/3.8 MB 1.9 MB/s eta 0:00:00 Downloading distlib-0.3.68-py2.py3-none-any.whl (468 kB) |████████████████████████████████| 468.59/468.5 9 kB 2.2 MB/s eta 0:00:00Collecting platformdirs<Downloading filelock-3,>=2.413.1-py3-none-any.whl (11 kB) Downloading platformdirs-24.51.20-py3-none-any.whl (14 17 kB)DEPRECATION: gpg 1.14.0-unknown has a non-standard version number. pip 24.0 will enforce this behaviour change. A possible replacement is to upgrade to a newer version of gpg or contact the author to suggest that they release a version with a conforming version number. Discussion can be found at https://github.com/pypa/pip/issues/12063
Installing collected packages: distlib, platformdirs, filelock, virtualenv
WARNING: The script virtualenv is installed in '/home/root/.local/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 distlib-0.3.6 8 filelock-3.813.0 1 platformdirs-24.51.2 0 virtualenv-20.1625.50
WARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv
root@bora:~#
</pre>
then * the <code>virtual environment</code> named '''desk''' can be created:
<pre class="board-terminal">
root@bora:~# python3 -m venv desk
* activate the <code>virtual environment</code>
<pre class="board-terminal">
root@bora:~# source envdesk/bin/activate
(desk) root@bora:~#
</pre>
(desk) root@bora:~# pip3 install --upgrade pip
Collecting pip
Using cached Downloading pip-2223.3.2-py3-none-any.whl (2.1 MB) |████████████████████████████████| 2.1 MB 167 kB/s
Installing collected packages: pip
Attempting uninstall: pip
Uninstalling pip-20.1.1:
Successfully uninstalled pip-20.1.1
Successfully installed pip-2223.3(desk) root@bora:~# pip3 --versionpip 22.3 from /home/root/env/lib/python3.8/site-packages/pip (python 3.8)2
(desk) root@bora:~#
</pre>
<pre class="board-terminal">
(desk) root@bora:~# pip3 install --upgrade setuptools
Requirement already satisfied: setuptools in ./envdesk/lib/python3.8/site-packages (47.1.0)
Collecting setuptools
Downloading Using cached setuptools-6569.50.03-py3-none-any.whl .metadata (16.2 MB3 kB) |████████████████████████████████| 1Using cached setuptools-69.2/10.2 MB 23-py3-none-any.3 MB/s eta 0:00:00whl (819 kB)
Installing collected packages: setuptools
Attempting uninstall: setuptools
Uninstalling setuptools-47.1.0:
Successfully uninstalled setuptools-47.1.0
Successfully installed setuptools-6569.50.03(desk) root@bora:~#
</pre>
(desk) root@bora:~# pip3 install wheel
Collecting wheel
Downloading Using cached wheel-0.3742.10-py2py3-none-any.whl.metadata (2.2 kB)Using cached wheel-0.42.0-py3-none-any.whl (35 65 kB)
Installing collected packages: wheel
Successfully installed wheel-0.3742.10(desk) root@bora:~#
</pre>
== packages installation==
In this example, the following packages are installed:
* '''asyncuabcrypt''' (OPCUA client and server librarypassword hashing)
* '''can''' (color animator)
* '''cbor''' (Concise Binary Object Representation - CBOR is comparable to JSON, has a superset of JSON’s ability)
* '''netifaces''' (network interface info)
* '''ntplib''' (Python NTP)
* '''paramiko''' (SSH2 protocol library)
* '''psutil''' (process and system monitoring)
* '''pymodbus''' (Modbus stack protocol)
* '''pyserial''' (Serial Port extension)
* '''python-daemon''' (Standard daemon process library)
* '''python-prctldateutil''' (C Python extension for system calldateutil)
* '''requests''' (Python HTTP)
<pre class="board-terminal">
(desk) root@bora:~# pip3 install can
Collecting can
Downloading can-0.0.0.tar.gz (1.0 kB)
Preparing metadata (setup.py) ... done
Building wheels for collected packages: can
Building wheel for can (setup.py) ... done
Created wheel for can: filename=can-0.0.0-py3-none-any.whl size=1266 sha256=b210b09ceb4ddf6c322bd2b7b249976cd45312b0919b7044158698ca604d9a00
Stored in directory: /home/root/.cache/pip/wheels/45/b4/e7/1f023b01e25425d5b9f3d2d537af7d7bf632e5d7a66ee703ed
Successfully built can
Installing collected packages: can
Successfully installed can-0.0.0
(desk) root@bora:~# pip3 install cbor
Collecting cbor
Downloading cbor-1.0.0.tar.gz (20 kB)
Preparing metadata (setup.py) ... - \ done
Building wheels for collected packages: cbor
Building wheel for cbor (setup.py) ... - \ | / - \ | / - done Created wheel for cbor: filename=cbor-1.0.0-cp38py3-cp38none-linux_armv7lany.whl size=51722 10029 sha256=056a9213e339003ff735d05fec04fa008ce05284211db1bc8c38083efb20013d36179cc461113f665dd3e948c56e5928726b83f01efc6107fe08030bf49ed8b2 Stored in directory: /home/root/.cache/pip/wheels/6231/393a/af8a/70e4f2f1154ae74c7689a115210902b4adcf8967f94253f8789d1a5e6f83f620826578089812b8ac236b86eaf4fbc3b36384
Successfully built cbor
Installing collected packages: cbor
Successfully installed cbor-1.0.0
(desk) root@bora:~# pip3 install python-prctl
Collecting python-prctl
Downloading python-prctl-1.8.1.tar.gz (28 kB)
Preparing metadata (setup.py) ... - \ done
Building wheels for collected packages: python-prctl
Building wheel for python-prctl (setup.py) ... - \ | / - \ | done
Created wheel for python-prctl: filename=python_prctl-1.8.1-cp38-cp38-linux_armv7l.whl size=25341 sha256=c117e57bb506c338071debe433cc8f9ce559400a7f4c6d68fca9aea33812a5d1
Stored in directory: /home/root/.cache/pip/wheels/d2/28/a0/76bcff726d677b487a8c926f51f4e672380ff8ca78c7d8d619
Successfully built python-prctl
Installing collected packages: python-prctl
Successfully installed python-prctl-1.8.1
(desk) root@bora:~# pip3 install netifaces
Collecting netifaces
Downloading netifaces-0.11.0.tar.gz (30 kB)
Preparing metadata (setup.py) ... - \ done
Building wheels for collected packages: netifaces
Building wheel for netifaces (setup.py) ... - \ | / - \ | / - \ | / - \ | / - done
Created wheel for netifaces: filename=netifaces-0.11.0-cp38-cp38-linux_armv7l.whl size=35204 sha256=e49fb06ca220a45c58c3c7df3c311eebd8968fd13e8a45038ad82620a3365b7a
Stored in directory: /home/root/.cache/pip/wheels/f1/2a/15/7d0abf7b60244bd5d7b32699837118eac09cb3f9f305164a71
Successfully built netifaces
Installing collected packages: netifaces
Successfully installed netifaces-0.11.0
(desk) root@bora:~# pip3 install psutil
Collecting psutil
Downloading psutil-5.9.3.tar.gz (483 kB)
|████████████████████████████████| 483.6/483.6 kB 2.3 MB/s eta 0:00:00
Installing build dependencies ... - \ | done
Getting requirements to build wheel ... - \ | done
Installing backend dependencies ... - \ | done
Preparing metadata (pyproject.toml) ... - \ | / done
Building wheels for collected packages: psutil
Building wheel for psutil (pyproject.toml) ... - \ | / - \ | / - \ | / - \ | / done
Created wheel for psutil: filename=psutil-5.9.3-cp38-cp38-linux_armv7l.whl size=289747 sha256=95645d458a09ba46fff0a52d5957947310afc52520588259038f75ab2cb60012
Stored in directory: /home/root/.cache/pip/wheels/8d/fc/1f/072e3caf8d3a4d56c497287c7741ad4c483d4adc65c9109abe
Successfully built psutil
Installing collected packages: psutil
Successfully installed psutil-5.9.3
(desk) root@bora:~# pip3 install requests
Collecting requests
Downloading requests-2.2831.10-py3-none-any.whl .metadata (62 4.6 kB) |████████████████████████████████| 62Collecting charset-normalizer<4,>=2 (from requests) Downloading charset_normalizer-3.3.8/622-py3-none-any.8 kB 887whl.7 metadata (33 kB/s eta 0:00:00)Collecting idna<4,>=2.5(from requests) Downloading idna-3.46-py3-none-any.whl .metadata (61 9.9 kB) |████████████████████████████████| 61Collecting urllib3<3,>=1.21.1 (from requests) Downloading urllib3-2.1.0-py3-none-any.5/61whl.5 kB 830metadata (6.4 kB/s eta 0:00:00)Collecting certifi>=2017.4.17(from requests) Downloading certifi-20222023.11.17-py3-none-any.whl.metadata (2.2 kB)Downloading requests-2.31.0-py3-none-any.whl (62 kB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 62.6/62.6 kB 557.9kB/s eta 0:00:00Downloading certifi-2023.11.2417-py3-none-any.whl (161 162 kB) |████████████████████████████████| 161 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 162.15/161162.1 5 kB 1.2 MB/s eta 0:00:00Collecting charsetDownloading charset_normalizer-normalizer<3,>=.3.2-py3-none-any.whl (48 kB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 48.5/48.5 kB 424.1 kB/s eta 0:00:00 Downloading charset_normalizeridna-2.13.16-py3-none-any.whl (39 61 kB)Collecting urllib3<1 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 61.27,>=16/61.216 kB 542.1kB/s eta 0:00:00 Downloading urllib3-2.1.26.120-py2.py3-none-any.whl (140 104 kB) |████████████████████████████████| 140 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 104.46/140104.4 6 kB 2959.1 MB3 kB/s eta 0:00:00
Installing collected packages: urllib3, idna, charset-normalizer, certifi, requests
Successfully installed certifi-20222023.911.24 17 charset-normalizer-23.13.1 2 idna-3.4 6 requests-2.2831.1 0 urllib3-2.1.26.120(desk) root@bora:~# pip3 install pymodbus</pre>Collecting pymodbus === asyncua ===Some packages may require [https://rustup Downloading pymodbus-3.6.3-py3-none-any.whl.rs/ Rust] compiler for building the metadata (for example14 kB) <code>wheel</code>:* download the <code>rust</code> Linux installer<pre>wget https://shDownloading pymodbus-3.rustup6.rs</pre>* execute the installer script:<pre>root@bora:~# ./rustup3-py3-init.shinfo: downloading installerWarning: using the BusyBox version of wget. Not enforcing strong cipher suites for TLS or TLS v1.2, this is potentially less secureConnecting to static.rustnone-langany.org whl (99.86.159.71:443205 kB)wget: note: TLS certificate validation not implementedsaving to ' ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 205.2/tmp/tmp205.2 kB 1.crML5188Vt1 MB/rustup-init'rustup-init 100% |********************************| 13.5M s eta 0:00:00 ETA'/tmp/tmp.crML5188Vt/rustup-init' savedInstalling collected packages: pymodbus$<2>Welcome to Rust!$<2>This will download and install the official compiler for the Rustprogramming language, and its package manager, Cargo....... $<2>Rust is Successfully installed nowpymodbus-3. Great!$<2>To get started you may need to restart your current shell6.3This would reload your $<2>PATH$<2> environment variable to includeCargo's bin directory ($HOME/.cargo/bindesk). To configure your current shell, run:source "$HOME/.cargo/env"root@bora:~# pip3 install ntplib</pre>Collecting ntplibOnce installed the related environment should be initialized:<pre class="board Downloading ntplib-0.4.0-py2.py3-none-terminal">root@bora:~# source "$HOME/any.cargo/env"root@bora:~# </pre>and again the ''Virtual environment'' activated whl (for installing the package inside the env6.8 kB):<pre class="board-terminal">root@boraInstalling collected packages:~# source env/bin/activatentplibroot@bora:~# </pre> In this way, the <code>asyncua</code> package can be built/Successfully installed:<pre class="boardntplib-terminal">0.4.0(desk) root@bora:~# python3 pip3 install python-m pip install asyncuadaemonCollecting asyncuapython-daemon Downloading asyncuapython_daemon-13.0.01-py3-none-any.whl (747 31 kB) |████████████████████████████████| 747Collecting docutils (from python-daemon) Downloading docutils-0.20.1-py3-none-any.6/747whl.6 kB metadata (2.4 MB/s eta 0:00:008 kB)Collecting cryptographylockfile>=0.10 (from python-daemon) Downloading cryptographylockfile-380.012.12-py2.tarpy3-none-any.gz whl (599 13 kB) |████████████████████████████████| 599.4/599Requirement already satisfied: setuptools>=62.4 kB 2.2 MB/s eta 0:00:00 Installing build dependencies ..in . - \ | / - \ | / - \ | desk/ - \ | lib/ done Getting requirements to build wheel ..python3. 8/site- \ | / done Preparing metadata packages (pyproject.tomlfrom python-daemon) (69.0.. - \ | / - done3)Collecting pytz Downloading pytzdocutils-20220.20.51-py2.py3-none-any.whl (500 572 kB) |████████████████████████████████| 500 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 572.7/500572.7 kB 2452.3 MB5 kB/s eta 0:00:00Collecting aiosqliteInstalling collected packages: lockfile, docutils, python-daemon Downloading aiosqliteSuccessfully installed docutils-0.1720.1 lockfile-0.12.2 python-py3daemon-none-any3.0.whl 1(15 kBdesk)root@bora:~# pip3 install python-dateutil
Collecting python-dateutil
Downloading Using cached python_dateutil-2.8.2-py2.py3-none-any.whl (247 kB) |████████████████████████████████| 247.7/247.7 kB 940.5 kB/s eta 0:00:00Collecting sortedcontainers Downloading sortedcontainers-2.4.0-py2.py3-none-any.whl (29 kB)Collecting aiofiles Downloading aiofiles-22.1.0-py3-none-any.whl (14 kB)Collecting typing_extensions>=3.7.2 Using cached typing_extensions-4.4.0-py3-none-any.whl (26 kB)Collecting cffi>=1.12 Using cached cffi-1.15.1-cp38-cp38-linux_armv7l.whlCollecting six>=1.5(from python-dateutil)
Downloading six-1.16.0-py2.py3-none-any.whl (11 kB)
Collecting pycparser Using cached pycparser-2.21-py2.py3-none-any.whl (118 kB)Building wheels for collected packages: cryptography Building wheel for cryptography (pyproject.toml) ... | / - \ done Created wheel for cryptography: filename=cryptography-38.0.1-cp38-cp38-linux_armv7l.whl size=1768831 sha256=1cfd149510ee62605549bde5a24cb6bbd2f959094906ec6d22c4850fd2b6268d Stored in directory: /home/root/.cache/pip/wheels/fb/dd/30/687c60465a7b76d3b461f7eb89da28d4f68edc182d625a3ccfSuccessfully built cryptographyInstalling collected packages: sortedcontainers, pytz, typing_extensions, six, pycparser, aiofiles, python-dateutil, cffi, aiosqlite, cryptography, asyncuaSuccessfully installed aiofiles-22.1.0 aiosqlite-0.17.0 asyncua-1.0.0 cffi-1.15.1 cryptography-38.0.1 pycparser-2.21 python-dateutil-2.8.2 pytz-2022.5 six-1.16.0 sortedcontainers-2.4.0 typing_extensions-4.4.0(desk) root@bora:~# </pre>=== paramiko ===Some package may have some troubles too about the versioning of sub-package. For example, this is the case where <code>paramiko</code> cannot be installed due to some build errors, see [https://github.com/paramiko/paramiko/issues/1761 Paramiko error while building pynacl]. This issue can be overcome installing a previous version for <code>PyNaCl</code>:  It occurs only with PyNaCl==1.5.0, so you can specify PyNaCl==1.4.0. It's OK because paramiko's requirement is PyNacl>=1.0.1 For example, the version '''1.2.0''' can be succesfully installed:<pre class="board-terminal">(desk) root@bora:~# pip3 install PyNaCl==1.2.0pyserialCollecting PyNaCl==1.2.0pyserial Downloading PyNaClpyserial-1.2.0.tar.gz (3.3 MB) |████████████████████████████████| 3.3/3.3 MB 2.4 MB/s eta 0:00:00 Preparing metadata (setup.py) ... doneRequirement already satisfied: six in ./env/lib/python3.8/site-packages (from PyNaCl==1.2.0) (1.16.0)Requirement already satisfied: cffi>=1.4.1 in ./env/lib/python3.8/site-packages (from PyNaCl==1.2.0) (1.15.1)Requirement already satisfied: pycparser in ./env/lib/python3.8/site-packages (from cffi>=1.4.1->PyNaCl==1.2.0) (2.21)Building wheels for collected packages: PyNaCl Building wheel for PyNaCl (setup.py) ... done Created wheel for PyNaCl: filename=PyNaCl-1.2.0-cp38-cp38-linux_armv7l.whl size=465695 sha256=b9d81dd6c93cd1b1527683500d2e6efbefaef1fadeddff5bef799cbba5d6dd47 Stored in directory: /home/root/.cache/pip/wheels/c8/a7/4c/f03548f24ea252a853b28a9281ac3d3bb59107432fa5cd0a4eSuccessfully built PyNaClInstalling collected packages: PyNaClSuccessfully installed PyNaCl-1.2.0(desk) root@bora:~# </pre>and the [https://pypi.org/project/paramiko/ paramiko] module is then installed:<pre class="board-terminal">(desk) root@bora:~# pip3 install paramikoCollecting paramiko Downloading paramiko-2.11.05-py2.py3-none-any.whl (212 90 kB) |████████████████████████████████| 212━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 90.96/21290.9 6 kB 186.5 MBkB/s eta 0:00:00Collecting bcrypt>=3.1.3 Downloading bcrypt-4.0.1.tar.gz (25 kB) Installing build dependencies ... done Getting requirements to build wheel ... done Preparing metadata (pyproject.toml) ... doneRequirement already satisfied: six in ./env/lib/python3.8/site-packages (from paramiko) (1.16.0)Requirement already satisfied: pynacl>=1.0.1 in ./env/lib/python3.8/site-packages (from paramiko) (1.2.0)Requirement already satisfied: cryptography>=2.5 in ./env/lib/python3.8/site-packages (from paramiko) (38.0.1)Requirement already satisfied: cffi>=1.12 in ./env/lib/python3.8/site-packages (from cryptography>=2.5->paramiko) (1.15.1)Requirement already satisfied: pycparser in ./env/lib/python3.8/site-packages (from cffi>=1.12->cryptography>=2.5->paramiko) (2.21)Building wheels for collected packages: bcrypt Building wheel for bcrypt (pyproject.toml) ... done Created wheel for bcrypt: filename=bcrypt-4.0.1-cp38-cp38-linux_armv7l.whl size=597512 sha256=cc3884972a18b64377fab94c738fc4f2abf0c78ca4d6cb1eec41848fde710078 Stored in directory: /home/root/.cache/pip/wheels/5c/32/05/1f093a4b4e1de66f1cff0a05ef844adbe89dcc027163712ee4Successfully built bcryptInstalling collected packages: bcrypt, paramikopyserialSuccessfully installed bcryptpyserial-43.0.1 paramiko-2.11.05
(desk) root@bora:~#
</pre>
(desk) root@bora:~# pip3 list
Package Version
------------------ ---------aiofiles 22.1.0aiosqlite 0.17.0asyncua 1.0.0-bcrypt 4.01.12
can 0.0.0
cbor 1.0.0
certifi 20222023.911.24cffi 1.15.117charset-normalizer 23.13.1cryptography 38.0.12docutils 0.1920.1idna 3.46
lockfile 0.12.2
netifaces 0.11.0
ntplib 0.4.0
paramiko 2.11.0pip 2223.3psutil 5.9.3pycparser 2.21pymodbus 3.06.03PyNaCl 1pyserial 3.2.05python-daemon 23.30.21
python-dateutil 2.8.2
python-prctl 1.8.1pytz 2022.5requests 2.2831.10setuptools 6569.50.03
six 1.16.0
sortedcontainers urllib3 2.4.0typing_extensions 4.41.0urllib3 1.26.12wheel 0.3742.10
(desk) root@bora:~#
</pre>
[GCC 10.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import asyncua
>>> import can
>>> import cbor
>>> import daemon
>>> import netifacesdateutil
>>> import ntplib
>>> import paramiko
>>> import psutil
>>> import pymodbus
>>> import prctlserial
>>> import requests
>>>
</pre>
8,254
edits