2012-08-29 30 views
54

Sono confuso su dove dovrei mettere i miei virtualenvs.Dove dovrebbero essere creati virtualenvs?

Con il mio primo progetto django, ho creato il progetto con il comando "django-admin.py startproject djangoproject".

Quindi ho inserito cd nella directory djangoproject e ho eseguito il comando "virtualenv env" che ha creato la directory dell'ambiente virtuale allo stesso livello della directory interna "djangoproject".

È questo il posto sbagliato in cui creare il virtualenv per questo particolare progetto?

Ho l'impressione che la maggior parte delle persone mantenga tutti i propri virtualenv insieme in una directory completamente diversa, ad es. ~/virtualenvs, e quindi usa virtualenvwrapper per passare avanti e indietro tra loro.

C'è un modo corretto per farlo?

risposta

80

Molte persone utilizzano lo strumento virtualenvwrapper, che mantiene tutti i virtualenv nello stesso punto (la directory ~/.virtualenvs) e consente le scorciatoie per la creazione e il mantenimento in essi. Ad esempio, si potrebbe fare:

mkvirtualenv djangoproject 

e poi più tardi:

workon djangoproject 

E 'probabilmente una cattiva idea per mantenere la directory virtualenv nel progetto stesso, dal momento che non si vuole distribuirlo (potrebbe essere specifico per il tuo computer o sistema operativo). Invece, mantenere un file utilizzando requirements.txt pip:

pip freeze > requirements.txt 

e distribuire questo. Questo permetterà altri usando il vostro progetto per reinstallare tutti gli stessi requisiti nel loro virtualenv con:

pip install -r requirements.txt 
+0

bello non avevo mai guardato nella roba di pip, ma se ho bisogno di un giorno questo sarà utile –

+0

pip è molto popolare nella comunità Django e molto facile da usare. –

+0

Grazie David, è un po 'come pensavo. Conoscevo la cosa dei requisiti e lo sto facendo. Non ero sicuro di dove andasse il venv. Il tuo commento su di esso specifico del sistema operativo è una buona giustificazione per fare ciò che suggerisci. – William

4

Il luogo generalmente accettato per mettere loro è lo stesso posto che l'installazione di default di virtualenvwrapper li mette: ~/.virtualenvs

Correlato: virtualenvwrapper è un eccellente strumento che fornisce abbreviazioni per i comandi comuni di virtualenv. http://www.doughellmann.com/projects/virtualenvwrapper/

10

modifica del percorso della directory virtualenv rompe

Questo è un grande vantaggio di mettere directory all'esterno della struttura del repository, ad esempio sotto ~/.virtualenvs con virutalenvwrapper.

Altrimenti, se lo si mantiene nell'albero del progetto, lo spostamento della posizione del progetto interromperà il virtualenv.

See: Renaming a virtualenv folder without breaking it

C'è --relocatable ma si sa di non essere perfetto.

Un altro piccolo vantaggio: non è necessario .gitignore esso.

Se non fosse per quello, lascerei semplicemente le mie virtualità gitignorizzate nell'albero del progetto stesso per tenere le cose correlate vicine tra loro.

Questo va bene poiché probabilmente non riutilizzerai mai una data virtualenv tra i progetti.

0

Se si utilizza pyenv install Python, quindi pyenv-virtualenv sarà una buona pratica. Se è impostato il file .python-version, può attivare o disattivare automaticamente env virtuale quando si cambia cartella di lavoro. Pyenv-virtualenv anche mettere tutto il virtuale env nella cartella $HOME/.pyenv/versions.

Problemi correlati