2010-06-22 5 views
2

J'ai actuellement un script que j'utilise pour mettre à jour des fichiers pour moi à partir d'un couple de dépôts. Le script fonctionne très bien si je l'exécute en utilisant:Intégrez un script python dans une application OS X, mais

python myscript.py 

Cependant, lorsque je tente de regrouper dans une application, il ne fonctionne plus correctement parce qu'une partie de mon script nécessite l'entrée d'utilisateur. Cependant, il n'y a pas d'interface à utiliser. J'ai essayé de l'empaqueter avec py2applet, Platypus (avec la sortie de texte), mais je n'ai pas été en mesure de trouver un moyen de faire fonctionner les entrées. Donc, ma question est la suivante: Quelle est la meilleure façon d'obtenir des entrées de l'utilisateur à partir d'une application python groupée?

Répondre

1

Quelle est la meilleure façon d'obtenir l'entrée d'utilisateur

Ne salissez pas avec une application « fourni ». Utilisez simplement la ligne de commande.

Dites à votre utilisateur d'ouvrir une fenêtre de terminal et d'exécuter votre application à partir de la ligne de commande. Sauve tout le monde beaucoup de douleur.

Les utilisateurs n'ont pas besoin d'applications groupées. Ils peuvent type. Essayez-le.

+0

ajouter '#!/Usr/bin/python' en première ligne à votre script. exécutez 'chmod + x path_to_your_script/myscript.py' et placez le script dans un répertoire qui se trouve dans l'environnement' PATH' varibale. Ensuite, tout le monde peut lancer le script en appelant simplement myscript.py. Vous pouvez même supprimer '.py' pour qu'il ressemble à tous les autres outils de ligne de commande. – jigfox

+0

Merci pour le conseil. J'adorerais que les gens puissent simplement apprendre à utiliser la ligne de commande, mais je pense que la réalité est que beaucoup de gens ne le veulent pas. Pour l'instant, je vais aller avec vos suggestions, mais pour le plaisir d'apprendre, y a-t-il un moyen d'aller à la demande initiale? En passant, j'utilise actuellement #!/usr/bin/env python comme mon shebang. Y at-il un avantage à utiliser #!/usr/bin/python en plus d'enregistrer quelques caractères? –

+1

En fait, je pensais que #!/usr/bin/env python était un peu plus robuste. –

2

@sudowork: Pour l'instant, je vais avec vos suggestions, mais pour l'amour de l'apprentissage , est-il un moyen d'aller au sujet de la demande initiale?

Vous pouvez passer des arguments dans un script python afin que vous n'ayez pas besoin du script python pour les obtenir. Obtenez-les dans votre application de cacao à la place. Demandez les entrées dans l'application Cocoa, puis exécutez le script Python en utilisant NSTask comme vous le feriez pour n'importe quel autre programme de ligne de commande et passez les arguments. Voici comment vous obtenez les arguments passés dans le script python. La première arg peut être obtenu avec ce ...

someVar = sys.argv[1] 

Pour le bundle script python suffit d'ajouter à votre projet. Assurez-vous que le script a le shebang et qu'il est exécutable comme expliqué ci-dessus. Vous devrez probablement forcer manuellement à l'ajouter à votre ensemble d'applications en ajoutant une nouvelle phase de génération de "copier des fichiers" et en ajoutant le script à cela.

0

Vous pouvez demander une saisie à l'aide de l'interface graphique via AppleScript. Appelez simplement/usr/bin/osascript, affichez une fenêtre avec un champ de texte et renvoyez-la.

Voir here for an example (mais en Perl)

Questions connexes