[OBSOLETE] Installer une lib avec upip ou autre à partir d'une URL ?
Posted: Wed 21 Apr 2021 09:19
upip est obsolète, il est maintenant remplacé par l'outil MIP (Micropython Install Package)
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 :
Les fichiers de la lib sont installés dans un répertoire /lib/ de la carte. C'est tout simplement nickel !
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 :
Vu ici : https://www.codespeedy.com/how-to-downl ... ng-python/
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 :
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 ?
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 ?