2012-08-15 19 views
26

Sto usando il testo sublime 2 per lo sviluppo di python insieme a virtualenv!Utilizzo di virtualenv con testo sublime 2

Il sistema di sviluppo di testo sublime standard 2 utilizza l'installazione standard di Python anziché la mia virtualenv in cui sono installati i miei pacchetti.

Come posso ottenere il testo sublime 2 per creare utilizzando il mio virtualenv?

Attualmente utilizzo il terminale per attivare il mio ambiente ed eseguire i miei script.

UPDATE: Mai ottenuto lavorando, ma visto che io sto usando pallone e costruisce quando si apporta una modifica, non è un grosso problema

+0

Quale sistema operativo si? –

+0

entrambi, ma ho intenzione di usare OS X di più! –

+4

Haha ... "entrambi". Non molto utile. – Molomby

risposta

-4

commenti nota su questa soluzione sia errata.

si deve modificare il sublime-project file e aggiungere il seguente:

"build_systems": 
[ 
    { 
    "name": "Run Tests", 
    "cmd": ["source", "/path/to/your/virtualenv/bin/activate"], 
    "working_dir": "/path/to/to/you/django_project", 
    "cmd": ["python", "manage.py", "test"] 
    } 
] 
+0

non si sa se funzioni, non riceve alcun output? –

+0

Dubito che funzioni, un dizionario con 2 voci "cmd". Il secondo "cmd" semplicemente sovrascriverà il primo. –

+0

Ma penso che se si rimuove il primo "cmd" e si sostituisca "python" nel secondo "cmd" da un percorso al binario python di virtualenv, funzionerà. IIRC, invocando direttamente un python di virtualenv funziona altrettanto bene che attivando prima il virtualenv. –

13

in Windows Questo funziona per me:

"build_systems": 
[ 
    { 
    "name": "Run Tests", 
    "working_dir": "/path/to/to/your/django_project", 
    "cmd": ["/path/to/your/virtualenv/bin/python.exe", "manage.py", "test"] 
    } 
] 
+0

Nota: sotto la risposta di nebffa sotto, che ricorda agli utenti di attivare il nuovo sistema di generazione selezionandolo in Strumenti> Crea sistema! – thumbtackthief

0

Io lo uso per costruire il mio progetto Flask. Ho aggiunto il seguente codice ai miei Impostazioni progetto: Progetto -> Modifica Progetto

{ 
    "folders": 
    [ 
      { 
       "path": "/C/MyDev/chilinzb/" 
      } 
    ], 
    "build_systems": 
    [ 
     { 
      "name": "Flask", 
      // activate the specific virtualenv for the project 
      "cmd": ["C:/MyDev/virtualenvs/env_chilinzb/Scripts/python", "$file"] 
     } 
    ] 
} 

e poi mi basta passare al mio file run.py e ha colpito Ctrl+B

0

questa combinazione funzionato alla grande: 2 passi

1) aggiungi le 2 chiavi appropriate al tasto 'env'. A) DJANGO_SETTINGS_MODULE B) PYTHONPATH

2) aggiornare cmd per riflettere la versione di python che si desidera utilizzare.

{ 

"env":{"DJANGO_SETTINGS_MODULE":"my_project.settings", 
    "PYTHONPATH":"d:\\Projects\\virts\\my_project\\Scripts;d:\\Projects\\virts\\my_project\\Lib;d:\\Projects\\virts\\my_project\\Lib\\site-packages;D:\\Projects\\my_project" 
    }, 
"cmd": ["c:/Python27/python.exe","$file"] 
} 
15

È inoltre possibile impostare il percorso per il sistema di generazione alla bin directory del vostro virtualenv, in questo modo:

"build_systems": 
[ 
    { 
     "selector": "source.python", 
     "env": {"PYTHONPATH":"/Users/user/project"}, 
     "path":"/Users/user/work/myvirtualenv/bin:$PATH", 
     "name": "Run virtualenv python", 
     "cmd": ["python", "-u", "$file"], 
     "file_regex": "^[ ]*File \"(...*?)\", line ([0-9]*)", 

     "variants": [ 
      { "name": "Run all Tests", 
       "working_dir": "/Users/user/project", 
       "cmd": ["nosetests"] 
      } 
     ] 
    } 
] 

Questo permette anche altri strumenti, come nose nell'esempio, per trovare il corretto il binario python dal virtualenv.

+0

Ti ho appena dato +1 ma voglio sottolineare che "nome" è valido solo all'interno di una variante. Fare riferimento a [sublime-text-2-docs] [st2] [st2]: http://sublime-text-unofficial-documentation.readthedocs.org/en/sublime-text-2/reference/build_systems.html –

+0

@user: dove devo aggiungere questo file in ST? – user1050619

+0

@ user1050619: da [st 3 docs] (http://docs.sublimetext.info/en/latest/file_processing/build_systems.html): * I sistemi di compilazione devono trovarsi da qualche parte nella cartella Pacchetti (ad esempio Pacchetti/Utente) . Molti pacchetti includono i propri sistemi di compilazione. * La cartella Packages risiede in ~ ~/Library/Application Support/Sublime Text 3/'con ST 3 sul mio Mac. – user1248490

12

Il Sublime's Build System supporta variabili che possono essere utilizzate con i file di progetto di Sublime per renderlo un po 'più portabile tra i progetti.

Se gli ambienti virtuali si trovano in un punto standard, creare un nuovo file di progetto (Progetto -> Salva progetto come) nella directory radice del progetto appena sopra la directory dell'ambiente virtuale. Quindi creare un nuovo file di configurazione con qualcosa di simile:

{ 

    "cmd": ["$project_path/venv/bin/python", "-u", "$file"] 

} 

Sembra quindi prendere il resto automaticamente - lo stesso come se digitato ./venv/bin/python dalla riga di comando - non c'è bisogno di pasticciare con percorsi, variabili d'ambiente, ecc.

1

in Mac OSX, questo funziona per me

{ 
"cmd": ["/your/virtualenv/bin/python", "-u", "$file"] 
} 

Quello che ho fatto è stato mantenerlo semplice:

andato a unità principale e la cartella in pitone creato:

sudo mkdir python 

poi è andato a lì e creato il virtualenv

virtualenv --no-site-packages virtualenvname 

poi creato un newbuild in ST2 con il comando precedente e funziona

+0

Questo ha funzionato magnificamente per me su OSX, grazie. – sleepycal

0

Ho una risposta per chiunque usi Heroku e usa il loro strumento foreman, e funziona benissimo. È sufficiente creare un nuovo sistema di compilazione in questo modo:

{ 
    "cmd": ["foreman", "run", "python", "-u", "$file"], 
    "file_regex": "^[ ]*File \"(...*?)\", line ([0-9]*)", 
    "selector": "source.python" 
} 

Questo tira in tutte le variabili di ambiente disponibili a Foreman, compreso variabile $ PATH vostra di virtualenv, che aggiunge il virtualenv Python al percorso pitone.

3

Sto utilizzando Flask, ma penso che sia applicabile a quasi tutti i casi.
mia build attuale è come questo, dove "Benicio" è la directory del mio progetto:

{ 
    "cmd": ["source ~/projs/benicio/venv/bin/activate && python ~/projs/benicio/benicio_tests.py"], 
    "shell": true 
} 
+0

Io uso '. venv/bin/attivare; python file.py' Grazie! –

3

dispiace per aggiungere ancora un altro risposta a questo - ma questo mi ha causato una grande quantità di dolore capire questo fuori.

Non solo è necessario effettuare un sistema di compilazione come:

"build_systems": 
[ 
{ 
    "name": "Maths", 
    "env": {"PYTHONPATH":"/home/nebffa/Desktop"}, 
    "path":"$project_path/bin", 
    "cmd": ["$project_path/bin/python3.3", "-u", "$file"] 
} 
] 

ma devi modificare un'impostazione nel Sublime Text - andare in Strumenti -> Build System -> "Matematica". Nel mio caso ho bisogno di scegliere "Matematica" perché è quello che ho chiamato il mio sistema di compilazione. Se non lo fai, Sublime Text non usa il tuo sistema di compilazione !!

+0

Questo deve essere incluso nella risposta accettata! – thumbtackthief

2

Ho appena ricevuto il testo sublime 3 per lavorare in un virtualenv. Sebbene l'OP abbia specificato ST2, è probabile che sia più simile a me che utilizzo ST3. Grazie alla user1248490 e Russell Beattie sono arrivato al seguente:

{ 
    "shell_cmd": "$project_path/vi_sys_pkgs/bin/python3 -u \"$file\"", 
    "path": "$project_path/vi_sys_pkgs/bin", 
    "file_regex": "^[ ]*File \"(...*?)\", line ([0-9]*)", 
    "selector": "source.python" 
} 

Nota che "cmd" è ora "shell_cmd" in ST3. Vedere ST3 blog

+1

Questa è l'unica soluzione che funziona anche per me, con ST3 + Ubuntu 13.10, con virtualenvs nascosto nella mia home page – puredevotion

0

la fonte non ha funzionato per me all'interno della build su lubuntu. usa '.' o punto invece di 'sorgente'.

questo ha funzionato:

{

"env": { 
    "DJANGO_SETTINGS_MODULE":"django_project_name.settings", 
    "PYTHONPATH":"/home/my_username/current/django_project_name:/home/my_username/.virtualenvs/django_project_name/lib/python2.7:/home/my_username/.virtualenvs/django_project_name/lib/python2.7/site-packages/" 
}, 
"working_dir":"$project_path", 
"cmd":[". /home/my_username/.virtualenvs/django_project_name/bin/activate && python $file"], 
"shell":true 

}

0

questo ha funzionato per me:

{ 
    "cmd": ["C:/Users/user/virtualenvs/env1/Scripts/python.exe", "-u", "$file"], 
    "file_regex": "^[ ]*File \"(...*?)\", line ([0-9]*)", 
    "selector": "source.python" 
} 

accumulo salvato in:

"C:\Users\user\AppData\Roaming\Sublime Text 2\Packages\User\"

come

"Python_env1.sublime-build"

Selezionare

Tools> Build System> Python_env1

fatto!

utilizza Windows 8.1, ST2

1

Questo è ciò che ho come un sistema di compilazione (assumendo che il mio virtualenv viene creato come una cartella chiamata 'env' nella mia directory del progetto corrente). Ciò significa che almeno non ho bisogno di cambiare continuamente il sistema di generazione tra i progetti:

{ 
    "cmd": ["env/bin/python", "-u", "$file"] 
} 

ho salvato questo come un nuovo sistema di costruzione (Strumenti -> Crea Sistema -> Nuovo sistema di costruzione).

0

Supponendo di mantenere la propria virtualenv specifica del progetto in una cartella .env al livello più alto del progetto. .

  1. Sublime> Progetto> Salva progetto come ... (se non l'hai già Questo vi permetterà di impostare le opzioni di generazione personalizzata per il progetto
  2. Progetto> Modifica del progetto:

    { 
        "folders":[ 
         { 
          "path": ".", 
          "folder_exclude_patterns": [".env"], 
         } 
        ], 
        "build_systems":[ 
         { 
          "name": "Run in VirtualEnv", 
          "shell_cmd": "source $project_path/.env/bin/activate && python -u $file" 
         } 
        ] 
    } 
    
  3. Strumenti> Crea sistema> Esegui in virtualenv

  4. Strumenti> Crea

Si prega di notare che questo è stato testato con Sublime Text 3.

Problemi correlati