Quelques clarification sur les versions de Python
Bonjour à tous,
J'utilise un code Python pour calculer la qualité de l'air.
J'arrive le faire tourner sur un Rapsberry après avoir fait ceci
Code:
1 2 3
|
chmod +x aqi.py
sudo ./aqi.py |
Citation:
PM2.5:55.3, PM10:47.5
PM2.5:55.5, PM10:47.7
PM2.5:55.7, PM10:47.8
PM2.5:53.9, PM10:47.6
PM2.5:53.6, PM10:47.4
PM2.5:54.2, PM10:47.3
Sur le Raspberry, j'avais développé un code, grâce à Adafruit, pour afficher du texte sur un écran LCD.
Le but de mon exercice est d'ajouter le code du LCD au code aqi.py, et je pense avoir des problèmes de version de Python, et je vais essayer de clarifier ma situation avec des questions et suggestion.
Premièrement, ces deux commandes m'exécute le code aqi.py
Code:
1 2
| sudo ./aqi.py
sudo python aqi.py |
Par contre
Code:
sudo python3 aqi.py
me retourne une erreur
Citation:
File "aqi.py", line 130, in <module>
cmd_set_sleep(0)
File "aqi.py", line 104, in cmd_set_sleep
ser.write(construct_command(CMD_SLEEP, [0x1, mode]))
File "/usr/lib/python3/dist-packages/serial/serialposix.py", line 518, in write
d = to_bytes(data)
File "/usr/lib/python3/dist-packages/serial/serialutil.py", line 63, in to_bytes
raise TypeError('unicode strings are not supported, please encode to bytes: {!r}'.format(seq))
TypeError: unicode strings are not supported, please encode to bytes: 'ª´\x06\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00ÿÿ\x06«'
Q1: Je pense que cela m'indique que le code n'a pas été développer pour Python3 et que la fonction cmd_set_sleep est la source de mon erreur? (j'aimerais bien avoir tout fonctionnant avec Python3.
Je continue sur le code LCD avant de revenir sur l'app AQI.
J'ai développe un petit code pour envoyer des messages LoRaWAN, qui fonction qu'avec Python trois.
Ceci
Code:
sudo python radio_rfm9x.py
me retourne
Citation:
Traceback (most recent call last):
File "radio_rfm9x.py", line 10, in <module>
import busio
ImportError: No module named busio
alors que
Code:
sudo python3 radio_rfm9x.py
fonctionne.
Malheureusement et idiotement, je ne retrouve pas (pour le moment) mes notes qui me parle de busio, mais je vais retrouver cela
Q2: Je pense que j'ai du installer busio pour python3 et pas pour python2.7. Il faudrait donc je le l'installe ainsi
Code:
pip install Adafruit-Blink
au lieux de
Code:
pip3 install Adafruit-Blinka
?
Si maintenant, je reviens su mon code aqi.py
J'ai ajouté ceci
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| # Import Blinka Libraries
import busio
from digitalio import DigitalInOut, Direction, Pull
import board
# Create the I2C interface.
i2c = busio.I2C(board.SCL, board.SDA)
# 128x32 OLED Display
import adafruit_ssd1306
display = adafruit_ssd1306.SSD1306_I2C(128, 32, i2c, addr=0x3c)
# Clear the display.
display.fill(0)
display.show()
width = display.width
height = display.height
# Puis plus bas dans le code
# draw a box to clear the image
display.fill(0)
display.text('AQI', 35, 0, 1) |
(Je précise que ceci fonctionne sur mon Raspberry pour un autre Script)
Ceci (et)
Code:
1 2
| sudo ./aqi.py
sudo python aqi.py |
me retourne
Citation:
Traceback (most recent call last):
File "radio_rfm9x.py", line 10, in <module>
import busio
ImportError: No module named busio
Ce qui reforce ma suspicious quant à busio que ne fonctionne que pour Python3.x
Si je fais
J'ai encore le même problème qu'avant, concernant cmd_set_sleep(0)
Ma question est donc
Q3: Comment rendre tous ce code compatible avec Python3 et python2, mais en tout cas avec Python3.
Q4: Est ce que dans ce code, il y a quelque chose qui indique qu'il ne fonctionne qu'avec Python2.x?
Q5: Je suppose que sudo ./aqi.py est égal à python aqi.py, mais comment faire pour que ./aqi.py soit exécuté avec python3?
Je vous remercie pour vos clarifications