PROJET AUTOBLOG


Sam & Max: Python, Django, Git et du cul

Site original : Sam & Max: Python, Django, Git et du cul

⇐ retour index

Mise à jour

Mise à jour de la base de données, veuillez patienter...

Script Python qui installe ses dépendances 8   Recently updated !

mardi 20 septembre 2016 à 09:50

Quand on a un petit script, on ne veut pas forcément dire aux gens avec lesquels on le partage qu’il faut pip installer toutes les dépendances, ou faire un setup.py complet.

On peut évidemment se tourner vers des solutions de compilation type nuitka, mais si on veut être KISS, on peut juste utiliser pip depuis le code Python:

import pip, sys
 
# On essaye d'importer les dépendances, et si elles sont pas dispos on les installe 
# pour l'utilisateur courant.
def require(*packages):
    for package in packages:
        try:
            if not isinstance(package, str):
                import_name, install_name = package
            else:
                import_name = install_name = package
            __import__(import_name)
        except ImportError:
 
            cmd = ['install', install]
            if not hasattr(sys, 'real_prefix'):
                cmd.append('--user')
            pip.main(cmd)
 
require('arrow', 'requests', 'minibelt', ('path', 'path.py'))
 
# Et votre script peut joyeusement utiliser ses dépendances
import arrow
import requests
 
from path import Path
from minibelt import window
 
print(Path('.').realpath())
print(arrow.get(), len(list(window(requests.get('http://sametmax.com')))))

Bien entendu, ça marche que pour les dépendances en pur Python, mais ça fait déjà un paquet de trucs.

N’oubliez pas qu’on reste dans une solution quick and dirty, ne commencez pas à me mettre ça partout.

Error happened! 0 - count(): Argument #1 ($value) must be of type Countable|array, null given In: /var/www/ecirtam.net/autoblogs/autoblogs/autoblog.php:428 http://ecirtam.net/autoblogs/autoblogs/sametmaxcom_a844ada43a979e3b1395ab9acb6afafb84340999/?Script-Python-qui-installe-ses-d%C3%A9pendances-8-Recently-updated #0 /var/www/ecirtam.net/autoblogs/autoblogs/autoblog.php(999): VroumVroum_Blog->update() #1 /var/www/ecirtam.net/autoblogs/autoblogs/sametmaxcom_a844ada43a979e3b1395ab9acb6afafb84340999/index.php(1): require_once('...') #2 {main}