115 votes

En Python, puis-je appeler le main() d'un module importé ?

En Python, j'ai un module myModule.py où je définis quelques fonctions et un fichier main() qui prend quelques arguments en ligne de commande.

J'appelle généralement ce main() depuis un script bash. Maintenant, je voudrais tout mettre dans un petit fichier paquet J'ai donc pensé que je pourrais peut-être transformer mon simple script en un script Python et le mettre dans le paquet.

Alors, comment je fais pour appeler le main() fonction de monModule.py à partir de la fonction main() de MyFormerBashScript.py ? Est-ce que je peux le faire ? Comment puis-je passer n'importe quel arguments à ce sujet ?

0voto

agoebel Points 391

En supposant que vous essayez de passer les arguments de la ligne de commande aussi.

import sys
import myModule

def main():
    # this will just pass all of the system arguments as is
    myModule.main(*sys.argv)

    # all the argv but the script name
    myModule.main(*sys.argv[1:])

0voto

Jeremy Thompson Points 14428

J'ai rencontré ce problème et je n'ai pas pu appeler un dossier. Main() car elle a été décorée avec ces options de clic, par exemple :

# @click.command()
# @click.option('--username', '-u', help="Username to use for authentication.")

Lorsque j'ai supprimé ces décorations/attributs, j'ai pu appeler la méthode Main() avec succès depuis un autre fichier.

from PyFileNameInSameDirectory import main as task
task()

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X