Salve a tutti.
Sto facendo pratica con python e ho provato a creare un piccolo menu in python 3 con due Button per selezionare la idle di pyton 2 o quella di python 3 utilizzando il comando "exec(open('/usr/bin/idle').read())" e "exec(open('/usr/bin/idle3').read())", ma mi parte sempre la idle di python 3.
Se invece lo scrivo in python 2 mi parte solo la idle del 2.
Facendo altri test pare che un interprete non riesce a richiamare l'altro, c'è una soluzione?
Grazie.
[Risolto] Comando "exec"
-
carm960
- Prode Principiante
- Messaggi: 35
- Iscrizione: sabato 6 maggio 2017, 2:06
- Desktop: ubuntustudio
- Distribuzione: Ubuntu 17.04 - x86_64
- Sesso: Maschile
- Località: Napoli
[Risolto] Comando "exec"
Ultima modifica di carm960 il mercoledì 24 maggio 2017, 8:26, modificato 2 volte in totale.
- crap0101
- Rampante Reduce

- Messaggi: 8242
- Iscrizione: martedì 30 ottobre 2007, 6:33
- Desktop: LXDE
- Distribuzione: Ubuntu 18.04.1 LTS
- Sesso: Maschile
- Località: TO
- Contatti:
Re: Comando "exec"
exec è lo strumento sbagliato per quello che vuoi fare
quel codice viene eseguito dall'interprete che stai utilizzando (e accidentalmente - ma neanche tanto) dato che la sintassi del modulo idlelib è identica nelle due versioni non hai neanche errori.
btw, se vuoi avviare un processo (un qualsiasi processo) usa subprocess, visto che in questo caso che sia o meno scritto in python non dovrebbe interessarti.
essendo /usr/bin/idle uno script python:crap0101@orange:/tmp/foo$ pydoc exec | head
The "exec" statement
********************
exec_stmt ::= "exec" or_expr ["in" expression ["," expression]]
This statement supports dynamic execution of Python code. The first
expression should evaluate to either a Unicode string, a *Latin-1*
encoded string, an open file object, a code object, or a tuple. If it
is a string, the string is parsed as a suite of Python statements
which is then executed (unless a syntax error occurs). [1] If it is an
Codice: Seleziona tutto
crap0101@orange:/tmp/foo$ cat /usr/bin/idle
#! /usr/bin/python
from idlelib.PyShell import main
if __name__ == '__main__':
main()
btw, se vuoi avviare un processo (un qualsiasi processo) usa subprocess, visto che in questo caso che sia o meno scritto in python non dovrebbe interessarti.
http://www.gnu.org/ http://boinc.berkeley.edu/ http://www.python-it.org/
- Ricorda le ultime parole di suo padre: «Sta' alla larga dalle chiese, figlio. La sola cosa per cui hanno la chiave è il merdaio. E giurami che non porterai mai un distintivo della legge» - W.S. Burroughs
- Ricorda le ultime parole di suo padre: «Sta' alla larga dalle chiese, figlio. La sola cosa per cui hanno la chiave è il merdaio. E giurami che non porterai mai un distintivo della legge» - W.S. Burroughs
-
carm960
- Prode Principiante
- Messaggi: 35
- Iscrizione: sabato 6 maggio 2017, 2:06
- Desktop: ubuntustudio
- Distribuzione: Ubuntu 17.04 - x86_64
- Sesso: Maschile
- Località: Napoli
Re: Comando "exec"
Grazie per l'aiuto ora lo script funziona perfettamente.
Codice: Seleziona tutto
from tkinter import *
import subprocess
def funzione_1 ():
finestra.destroy()
subprocess.run(['idle'])
def funzione_2 ():
finestra.destroy()
subprocess.run(['idle3'])
finestra = Tk()
finestra.geometry("300x150+810+390")
finestra.title(" Python Chooser")
testo_0 = Label (finestra, text="").pack()
testo_1 = Label (finestra, text=" Scegli la versione ", fg="white", bg="gray").pack()
testo_2 = Label (finestra, text="").pack()
pulsante_1 = Button(text="Python 2.7", command=funzione_1).pack()
pulsante_2 = Button(text="Python 3.5", command=funzione_2).pack()
finestra.mainloop()Chi c’è in linea
Visualizzano questa sezione: 0 utenti iscritti e 2 ospiti