2009-09-13 14 views
2

Désolé si c'est sur le mauvais site (peut-être superutilisateur) mais j'essaye de rendre mon fichier python.py exécutable afin que je puisse cliquer dessus et il fait automatiquement son truc, sans que je le spécifie pour ouvrir dans le terminal par cette invite par défaut, et j'ai déjà 'chmod + x' pour ses permissions.Fichier Python auto-exécutable sans ouverture du terminal?

Précision:

  • Je veux l'exécuter en cliquant dessus, non pas par le terminal (je voulais dire que lorsque je l'ai dit « peut cliquer dessus et il fait automatiquement sa chose »)
  • Déjà une ligne shebang
  • Lorsque je clique dessus maintenant, il me demande si vous voulez l'ouvrir dans un fichier texte, terminal - puis-je toujours l'ouvrir par défaut dans le terminal ou est-ce juste une boule demande?

Répondre

3

d'abord, choisissez une extension de fichier que vous voulez pour les fichiers que vous voulez avoir ce comportement . pyw est probablement un bon choix.

Nommez votre fichier et, dans votre navigateur de fichiers, associez ce type de fichier à python. Dans GNOME, vous ouvrez sa fenêtre Propriétés, accédez à l'onglet Ouvrir avec et entrez python en tant que commande personnalisée.

Maintenant, voici la partie importante: Cette petite boîte de dialogue vous demandant ce que vous aimeriez faire avec le fichier est parce qu'il est marqué comme exécutable. Supprimez le bit exécutable avec chmod -x. Maintenant, lorsque vous double-cliquez dessus, il sera simplement ouvert avec le programme associé.

Bien sûr, si vous voulez l'exécuter à partir de la ligne de commande, vous devrez le démarrer explicitement avec python puisqu'il n'est pas marqué comme exécutable. La ligne shebang n'a plus d'importance, mais je la laisserais de toute façon au cas où quelqu'un d'autre la marquerait comme exécutable et s'attend à ce qu'elle fonctionne.

+0

Oh, et s'il s'agit d'un programme basé sur du texte, "xterm -e python" afficherait un terminal. Remplacez votre émulateur de terminal de votre choix. – kwatford

0

Avez-vous placé ce au début du fichier:

#!/usr/bin/python 

?

4

Sur la première ligne dans votre fichier python, ajoutez ceci:

#!/usr/bin/env python 

Donc, si vous avez:

print "Hello World" 

Vous devriez alors:

#!/usr/bin/env python 
print "Hello World" 
+1

La ligne de tralala préféré pour Python est #!/Usr/bin/python env qui fonctionnera si python est installé quelque part autre que/usr/bin –

+0

Mise à jour avec les conseils de George V. Reilly –

+0

J'ai déjà une ligne de tralala , J'ai déjà le fichier chmod + x'd, sauf que si je clique sur le fichier (évidemment pas le même que "./fichier.py" du terminal) il m'indique avec 4 options .. et "Voulez-vous exécuter "foo", ou afficher son contenu? " Je veux que cela fonctionne automatiquement dans le terminal si possible. Désolé si ma question était confuse. –

0

Comme d'autres ont dit, vous devez mettre le "shebang" au début du fichier, pour dire quel interprète utiliser pour exécuter le fichier .

Comme mentionné dans le lien ci-dessus, la façon la plus portable est d'utiliser la commande env (au lieu d'un trajet fixe à python) - mettre ce que la première ligne du fichier:

#!/usr/bin/env python 

La coquille va regarder $PATH pour votre python, plutôt que de chercher /usr/local/bin/python puis échouer. Cela signifie que cela fonctionnera si Python est installé dans un emplacement non standard.

Par exemple:

$ cat example.py 
print "Test" 
$ file example.py # it is treated as an ASCII file 
example.py: ASCII text 
$ chmod +x example.py 
$ ./example.py # when executed, it defaults to being executed as a shell script 
./example.py: line 1: print: command not found 

Maintenant, si j'ajoute la ligne « tralala » ...

$ cat example.py 
#!/usr/bin/env python 
print "Test" 
$ file example.py # it is recognised as a Python script 
example.py: a python script text executable 
$ ./example.py # and executes correctly 
Test 
Questions connexes