Vous êtes ici : Accueil / Forums & ML / Forums Python / Forum général Python / (debutant) executer une function depuis un autre fichier

(debutant) executer une function depuis un autre fichier

Remonter à Forum général Python
  • (debutant) executer une function depuis un autre fichier

    Envoyé par MrGAG le 11 Février 2009 à 00:14
    Hello, je suis debutant en python, j'ai quelques bases en script : actionscript, maxscript (3dsmax).
    Je me mets au python dans le cadre d'un autre logiciel 3d, HOUDINI; un logiciel excellent qui supporte python.

    J'ai deja quelques lignes dans un fichier, qui sont capables de charger une scene HOUDINI sur un pc du reseau et de lancer le rendu des images.
    Je voudrais appeler cette function depuis un autre fichier, ou a partir de la console python... en precisant differente variables ( chemin de la scene, ip de la machine ...)

    j'ai essayé via la function import, mais sans resultat.

    comment puis-je faire ?


    pardon, ma question est assez generale ...



    • Re: (debutant) executer une function depuis un autre fichier

      Envoyé par jice le 11 Février 2009 à 09:55
      Il n'est pas rare que les logiciels supportant les plugins python nécessitent que les fonctions soient lancées à partir du logiciel en question si elles font appel à un module propre au logiciel.
      Après, tout dépend du travail que tu souhaites faire à partir de la console et de ce qu'Houdini supporte comme paramètre si on le lance à partir de la ligne de commande.
      Peut-être est-il possible de faire un script indépendant de Houdini qui le lance à un moment donné avec des paramètres pour exécuter une macro python qui fait le travail propre à Houdini...
    • Re: (debutant) executer une function depuis un autre fichier

      Envoyé par MrGAG le 11 Février 2009 à 14:33
      il dois y avoir, j'imagine une solution assez simple pour ce que je veux faire.

      Imaginons un fichier "fonction.py"


      def hello(str):
      print str



      et a partir de la console ( hython.exe : qui est version de houdini sous la forme d'une console python, avec tous les modules houdini prechargés ....

      j'aimerais appeler cette fonction.
      ma premiere demarche etait :

      execfile("fonction.py","hello world")


      évidemment ca ne fonctionne pas ...

      Moralité, je nage ..... ;)

    • Re: (debutant) executer une function depuis un autre fichier

      Envoyé par jice le 11 Février 2009 à 17:27
      pourquoi tu ne fais pas

      import fonction
      fonction.hello("Hello world")
    • Re: (debutant) executer une function depuis un autre fichier

      Envoyé par jice le 11 Février 2009 à 17:27
      en étant bien sûr que fonction.py est dans le path ;)
    • Re: (debutant) executer une function depuis un autre fichier

      Envoyé par glickind le 11 Février 2009 à 17:33
      Regarde ci dessous le fonctionnement de execfile et de import.

      #!/usr/bin/python
      # -*- coding: iso-8859-1 -*-

      def hello(str):
      print str

      if __name__ == "__main__":
      print "Execution de fonction.py"

      print "dans tous les cas" # à éviter car executé lors de l'import


      Méthode 1: execfile execute le "__main__" c'est-à-dire le programme principal

      Python 2.5.2 (r252:60911, Jul 31 2008, 17:28:52)
      [GCC 4.2.3 (Ubuntu 4.2.3-2ubuntu7)] on linux2
      Type "help", "copyright", "credits" or "license" for more information.
      >>> hello('Hello World !')
      Traceback (most recent call last):
      File "", line 1, in
      NameError: name 'hello' is not defined
      >>> execfile('fonction.py')
      Execution de fonction.py
      dans tous les cas
      >>> hello('Hello World !')
      Hello World !
      >>> quit()


      Méthode 2: from mon_module import *

      Python 2.5.2 (r252:60911, Jul 31 2008, 17:28:52)
      [GCC 4.2.3 (Ubuntu 4.2.3-2ubuntu7)] on linux2
      Type "help", "copyright", "credits" or "license" for more information.
      >>> hello('Hello World !')
      Traceback (most recent call last):
      File "", line 1, in
      NameError: name 'hello' is not defined
      >>> from fonction import *
      dans tous les cas
      >>> hello('Hello World !')
      Hello World !
      >>>


      Méthode 3: import mon_module

      Python 2.5.2 (r252:60911, Jul 31 2008, 17:28:52)
      [GCC 4.2.3 (Ubuntu 4.2.3-2ubuntu7)] on linux2
      Type "help", "copyright", "credits" or "license" for more information.
      >>> import fonction
      dans tous les cas
      >>> hello('Hello World !')
      Traceback (most recent call last):
      File "", line 1, in
      NameError: name 'hello' is not defined
      >>> fonction.hello('Hello World !')
      Hello World !
      >>>


      En général on recommande d'éviter de mélanger les méthodes 2 et 3,
      la méthode 3 est plus sure (on n'appelera pas une fonction qui a le meme nom dans un autre module )
      mais plus fastidieuse car il faut retaper le nom du module
    • Re: (debutant) executer une function depuis un autre fichier

      Envoyé par glickind le 11 Février 2009 à 17:34
      je t'invite à voir la vidéo en anglais du tutorial
      Masterclass: Programming Houdini with Python

    • Re: (debutant) executer une function depuis un autre fichier

      Envoyé par MrGAG le 11 Février 2009 à 18:20
      ouah !!! merci les gars, c'est exactement ce que je cherchais, ca marche parfaitement.

      merci mille fois !
    • Re: (debutant) executer une function depuis un autre fichier

      Envoyé par MrGAG le 11 Février 2009 à 18:30
      glickind" a écrit:
      je t'invite à voir la vidéo en anglais du tutorial
      Masterclass: Programming Houdini with Python



      Oui je l'ai vu, et c'est ça qui m'a fait prendre conscience de la puissance de python dans houdini. Il est implémenté partout dans le logiciel, c'est un bonheur.

      Si je m'accroche un petit peu, ca peut devenir un outil hallucinant.

      Merci encore !
Rendu par Ploneboard