2013-10-08 14 views
9

Sto cercando di ottenere Sublime Text 3 (build 3049, se questo è importante) per eseguire uno script Python. Un semplice doppio rivestimentoProblema con il sistema di compilazione di Sublime Text 3: non è possibile ottenere input dal programma in esecuzione

var = raw_input("Enter something: ") 
print "You entered ", var 

che richiede l'input, lo attende, quindi lo stampa fuori dal prompt di Windows Console.

Questo è, vedendo il numero di domande simili sul lato, un problema per un discreto numero di utenti, quindi ho esaminato quelle e provato ... cose. Fatto una copia del file exec.py, ho commentato che una riga, creato un nuovo file di pythonw, ha provato a fare scherzi con il file di build ... niente sembra funzionare.

In mancanza di una soluzione definitiva, come si lavora con Python utilizzando Sublime Text 3?

+0

Stai cercando di far eseguire al tuo sistema Python lo script o ST3 stesso? – MattDMo

+0

@MattDMo - Non sapevo che ST3 fosse fornito in bundle con python. Ma, in ogni caso, sto cercando di ottenere il mio python di sistema (situato in c: \ python27 \) per eseguirlo. – Rook

risposta

21

Prima di tutto, dal momento che stai usando una build di sviluppo, devi essere un utente registrato (buono!) E io raccomanderei upgrading a 3053, la versione più recente, in quanto più recente è spesso meglio in termini di problemi noti essendo fisso. In secondo luogo, solo FYI, c'è una serie abbastanza completa di documenti (non ufficiali) allo docs.sublimetext.info. Sono ben organizzati, abbastanza aggiornati e coprono molto più terreno di quelli "ufficiali" su sublimetext.com. Infine, in risposta al tuo comment, Sublime viene fornito con una versione leggermente ridotta del built-in Python. ST2 ha 2.6, mentre ST3 ha 3.3, quindi se scrivi plugin devi conformarti a quelle specifiche della lingua. È possibile eseguire arbitrariamente commands dalla console premendo Ctrl`.

Come documentato in diverse domande SO, Sublime Text non può gestire input tramite raw_input() o input(). Lo stesso vale per altre lingue: Ruben's gets, classe Java Scanner, classe readline del nodo, ecc. La soluzione a breve termine più semplice è quella di ottenere Package Control se non lo si possiede già, quindi installare SublimeREPL. Ti permette di trasferire o eseguire parte o tutto il tuo codice attraverso il REPL in esecuzione (dovrai prima avviarne uno).

Se il codice in esecuzione non funziona bene con SublimeREPL (ad esempio, si sta utilizzando C/C++/Java/etc e necessario compilare il codice prima dell'esecuzione) oppure si desidera eseguire semplicemente indipendentemente da Sublime, dovrai creare il tuo build system. Salvare il seguente come Packages/User/Python_cmd.sublime-build:

{ 
    "cmd": ["start", "cmd", "/k", "c:/python27/python.exe", "$file"], 
    "selector": "source.python", 
    "shell": true, 
    "working_dir": "$file_dir" 
} 

cambiare il percorso del file eseguibile di Python a seconda dei casi. Quindi, vai a e seleziona Python_cmd, e quando premi CtrlB per costruire, una nuova finestra cmd si aprirà con il tuo file in esecuzione. L'opzione /k ritorna al prompt dei comandi, senza chiudere la finestra, dopo che il programma è stato eseguito in modo da poter esaminare output, traceback, ecc.

+0

Ciao, ricordo di aver usato questa soluzione diverse volte prima sulle mie diverse installazioni di Ubuntu e Linux Mint e stava funzionando. Comunque, ho smesso di usare sublime qualche tempo fa, e ho reinstallato il mio Linux Mint 17.2, quindi ho dovuto reimpostarlo quando volevo usare sublime. Tuttavia, ottengo questo errore: 'start: nome lavoro mancante Prova' start --help 'per ulteriori informazioni. Cosa devo fare? – Rohan

+0

@Rohan come si può vedere chiaramente dai tag della domanda e il percorso nel sistema di build, questa è una soluzione per Windows, non per Linux. – MattDMo

+0

Ho pensato di cambiare il percorso per risolverlo ... – Rohan

Problemi correlati