Ao preparar um novo Raspberry Pi para receber sondas meteorológicas, e seguindo as instruções de instalação deparei-me com um erro inesperado.
pi@galaxia:~/radiosonde_auto_rx/auto_rx $ python auto_rx.py
Traceback (most recent call last):
File "auto_rx.py", line 31, in <module>
from autorx.web import start_flask, stop_flask, flask_emit_event, WebHandler, WebExporter
File "/home/pi/radiosonde_auto_rx/auto_rx/autorx/web.py", line 23, in <module>
from flask_socketio import SocketIO
File "/usr/local/lib/python2.7/dist-packages/flask_socketio/__init__.py", line 21, in <module>
import socketio
File "/usr/local/lib/python2.7/dist-packages/socketio/__init__.py", line 3, in <module>
from .client import Client
File "/usr/local/lib/python2.7/dist-packages/socketio/client.py", line 7, in <module>
import engineio
File "/usr/local/lib/python2.7/dist-packages/engineio/__init__.py", line 3, in <module>
from .client import Client
File "/usr/local/lib/python2.7/dist-packages/engineio/client.py", line 2, in <module>
from json import JSONDecodeError
ImportError: cannot import name JSONDecodeError
Não era a primeira vez que fazia esta configuração, por isso estranhei, e resolvi verificar e voltar a verificar se tinha seguido todas as instruções.
Após concluir que (aparentemente) tinha feito tudo bem, e sem grandes soluções apresentadas pelo Señor Google, ocorreu-me que podia ter algo a ver com a versão do Python. Fui confirmar no outro receptor que estava a usar a versão 2.7, mas por alguma razão na nova instalação, com a mesma versão a coisa não funcionava.
Resolvi então tentar com o Python 3. Primeiro, tive de instalar os pacotes necessários para esta versão (alguns dos pacotes são duplicados, mas não são instalados de novo)
sudo apt-get install python3-numpy python3-setuptools python3-crcmod python3-requests python3-dateutil python3-pip sox git build-essential libtool cmake usbutils libusb-1.0-0-dev rng-tools libsamplerate-dev
e depois instalar com o pip3 os módulos necessários
sudo pip3 install flask flask-socketio
Após isto tudo continuei a seguir as instruções da wiki, mas onde tinha python
(o default neste pi é o 2) usei python3
, ou seja
python3 auto_rx.py
E o erro deixou de aparecer.
Computadores…