IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

pip dans script python


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre chevronné
    Homme Profil pro
    BTS SN IR
    Inscrit en
    Mai 2017
    Messages
    514
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : BTS SN IR

    Informations forums :
    Inscription : Mai 2017
    Messages : 514
    Par défaut pip dans script python
    Bonjour, malgré pas mal de recherche je n'est pas trouvé mon bonheur, je toute bien que c'est une demande impossible...

    existe t'il un moyen d'utiliser pip directement dans du python ? cela me permettrait de ne pas avoir à bidouiller un .bat...

    rien dans la doc, rien après
    bizarre que pip soit si sous-documenté ...

  2. #2
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 695
    Par défaut
    Salut,

    "pip" est un module Python qui s’appelle via python -m pip ... où les ... sont les arguments à passer à la commande (qui eux sont documentés).
    Si on veut l'appeler directement, il faut construire cette liste d'arguments et la passer à pip.main.
    Exemple simple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    >>> import pip
    >>> pip.main (['list'])
    Pour un truc plus compliqué comme "install --download DIR -r requirements.txt" (exemple pris dans la doc), on peut faire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    >>> import pip
    >>> import shlex
    >>> cmd = "install --download DIR -r requirements.txt"
    >>> pip.main(shlex.split(cmd))
    note: inutile de documenter une mécanique construite suivant des règles supposées connues.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Membre chevronné
    Homme Profil pro
    BTS SN IR
    Inscrit en
    Mai 2017
    Messages
    514
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : BTS SN IR

    Informations forums :
    Inscription : Mai 2017
    Messages : 514
    Par défaut
    Merci, en faite c'est surtout le main qui me posait problème ( surtout le connaître )

    note: inutile de documenter une mécanique construite suivant des règles supposées connues.
    Ces fameuses règles supposée connues ? vous faites référence à quoi? est-ce que tout les module qui s'appelle via cmd peuvent l'être directement en python avec module.main([argument]) ?

  4. #4
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    172
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 172
    Par défaut Créer batch
    Sinon tu peux créer tes batchs via python et les exécuter :

    On le crée (j'ai pris un extrait d'un de mes scripts) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    def CreateBatch(self):
        if not exists(rep_batchs+"\\magento-cache-cleaner.bat"):
            with open(rep_batchs+"\\magento-cache-cleaner.bat", "w") as batch:
                batch.write('@echo off\n')
                batch.write('chcp 1252\n')
                batch.write('echo ------Nettoie le cache de Magento 2------\n')
                batch.write('php '+path_magento+' cache:clean\n')
                batch.write('TIMEOUT /t 3 /nobreak\n')
                batch.write('echo ------ Flush le cache de Magento 2------\n')
                batch.write('echo Cache Nettoyé !\n')
                batch.write('echo Le programme se terminera dans 3 secondes...\n')
                batch.write('echo Appuyez sur une touche pour quitter tout de suite !\n')
                batch.write('TIMEOUT /t 3\n')
                batch.write('exit\n')
        else:
            print u"ce fichier batch existe déjà"
    Puis on le lance :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    def CleanFlush(self):
        OriginePath=os.getcwd()
        os.chdir(getcwd()+r"\batchs")
        thread.start_new_thread(os.system,("magento-cache-cleaner.bat",))
        time.sleep(1)
        thread.start_new_thread(os.chdir,(OriginePath,))
    Plus de détails sur le code de mon script : ICI

    Voilà voilà

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2017
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2017
    Messages : 22
    Par défaut
    Dans un programme, j'utilise pip pour tenter d'installer un module. Le scripte fonctionne très bien!

    Le code brute:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
     
    def installation_pillow():
    	"""
            sudo python3 -m pip install pillow==3.4
            debut python -m pip install pillow fin
            Retourne True si l'instalation a été efféctuée avec succès
            """
    	rep = os.getcwd()
    	os.chdir(os.path.dirname(sys.executable))								#Le répertoire par défaut est celui de l'executable
    	if "win" in self.platform:												#La syntaxe pour windows
    		pythons = ["py -"+self.version, "py -"+self.version.split(".")[0], "python"]
    	else:															#La syntaxe de linux
    		pythons = ["python"+self.version, "python"+self.version.split(".")[0], "python"]
    	for fin in ["=="+self.version, "=="+self.version.split(".")[0], ""]:
    		for python in pythons:
    			if self.fin is True:
    				return False
    			message = python+" -m pip install pillow"+fin
    			print("-"*20+"\nExecution du message suivant:\n"+message+"\n")
    			if os.system(message) == 0:
    				os.chdir(rep)
    				return True
    	os.chdir(rep)
    	return False
    et pour les variables qui changent selon l'ordinateur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    self.platform = sys.platform				#Pour savoir si l'on est sur linux ou windows 'win32' ou '' ...
    self.version = sys.version.split(" ")[0]		#La version de python '3.6.0 (v3.6.0:41df79263a11, Dec 23 2016, 07:18:10) [MSC v.1900 32 bit (Intel)]'
    En tout cas, chez moi ce script fonctionne à merveille sur 3 ordinateurs différents, sur linux et sur windows.

Discussions similaires

  1. [Python 2.X] Lire et utiliser fichier contenant variable d'environnement dans script Python
    Par ptonnerre dans le forum Général Python
    Réponses: 1
    Dernier message: 05/12/2015, 18h57
  2. ajout de données dans BD Python Django
    Par Ibilolz dans le forum Général Python
    Réponses: 1
    Dernier message: 19/06/2014, 11h37
  3. Ouvrir explorateur Windows dans script python pour Blender
    Par ero91 dans le forum Développement 2D, 3D et Jeux
    Réponses: 3
    Dernier message: 27/03/2013, 13h36
  4. script PHP dans script python sous zope
    Par kck61 dans le forum Zope
    Réponses: 1
    Dernier message: 18/07/2012, 17h25
  5. les includes dans Boost Python
    Par spartan811 dans le forum Boost
    Réponses: 3
    Dernier message: 15/05/2012, 15h35

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo