Sur ESP, si on est sur un réseau connecté au web, il est facile d'installer une librairie à l'aide de upip depuis l'interpréteur, ce qui est très pratique !
Par exemple, on peut faire :
Code: Select all
>>> import upip as pip
>>> pip.install("module")
Je me demande par contre si on aurait pas une possibilité aussi simple et facile d'installter une lib à partir d'une url d'un github par exemple (les fichiers de libs /drivers sont souvent sous cette forme) ? avec pip ou un équivalent wget en micropython. çà serait tout simplement très pratique pour installer les libs et maintenir un dépôt de drivers dans lequel on aurait qu'à donner l'url à aller chercher, le tout depuis interpréteur ou code Python.
Il faut probablement regarder du côté de urequest : https://github.com/micropython/micropyt ... /urequests
On devrait pouvoir faire quelque chose comme :
Code: Select all
import requests
url = "https://raw.githubusercontent.com/mchobby/esp8266-upy/master/mcp4725/lib/mcp4725.py"
#just a random link of a dummy file
r = requests.get(url)
#retrieving data from the URL using get method
with open("mcp4725.py", 'wb') as f:
#giving a name and saving it in any required format
#opening the file in write mode
f.write(r.content)
#writes the URL contents from the server
En mettant tout çà dans une petite fonction install(url) d'un module driver on devrait arriver à quelque chose de pas mal et simple. Et avec un dict, on pourrait même prédéfinir les url pour n'avoir à saisir que le nom de la lib avec install("nomdriver")... çà serait pas mal du tout...
on pourrait même pousser jusqu'à intégrer l'installation des libs utiles d'un code dans le code, avant les imports, en faisant :
Code: Select all
import drivers, os
files=os.listdir('/')
if not "ds18b20.py" in files : drivers.install("ds18b20")
if not "onewire.py" in files : drivers.install("onewire")
#etc...
import ds18b20
import onewire
...
Ce faisant, dans le code lui-même, on installe les librairies utiles sans autre manip' que d'exécuter le code.
Des suggestions autour de ce sujet ? solution existante "clé en main" que je connaitrai pas ? déjà possible avec upip ?