Django Ambiente virtuale


Esempio

Sebbene non sia strettamente necessario, si consiglia vivamente di avviare il progetto in un "ambiente virtuale". Un ambiente virtuale è un contenitore (una directory) che contiene una versione specifica di Python e un insieme di moduli (dipendenze), e che non interferisce con il Python nativo del sistema operativo o altri progetti sullo stesso computer.

Impostando un ambiente virtuale diverso per ogni progetto su cui lavori, vari progetti di Django possono essere eseguiti su diverse versioni di Python e possono mantenere i loro set di dipendenze, senza il rischio di conflitti.

Python 3.3+

Python 3.3+ include già un modulo venv standard, che di solito si chiama pyvenv . In ambienti in cui il comando pyvenv non è disponibile, è possibile accedere alla stessa funzionalità invocando direttamente il modulo come python3 -m venv .

Per creare l'ambiente virtuale:

$ pyvenv <env-folder>
# Or, if pyvenv is not available
$ python3 -m venv <env-folder>

Python 2

Se si utilizza Python 2, è possibile prima installarlo come un modulo separato da pip:

$ pip install virtualenv

E quindi creare l'ambiente usando invece il comando virtualenv :

$ virtualenv <env-folder>

Attiva (qualsiasi versione)

L'ambiente virtuale è ora impostato. Per poterlo utilizzare, deve essere attivato nel terminale che si desidera utilizzare.

Per 'attivare' l'ambiente virtuale (qualsiasi versione di Python)

Linux come:

$ source <env-folder>/bin/activate

Windows come:

<env-folder>\Scripts\activate.bat

Questo cambia la tua richiesta di indicare che l'ambiente virtuale è attivo. (<env-folder>) $

D'ora in poi, tutto ciò che verrà installato usando pip sarà installato nella tua cartella env virtuale, non in tutto il sistema.

Per abbandonare l'ambiente virtuale usa deactivate :

(<env-folder>) $ deactivate

In alternativa: usa virtualenvwrapper

Potresti anche considerare l'utilizzo di virtualenvwrapper che rende molto utile la creazione e l'attivazione di virtualenv e la separazione dal codice:

# Create a virtualenv
mkvirtualenv my_virtualenv

# Activate a virtualenv
workon my_virtualenv

# Deactivate the current virtualenv
deactivate

In alternativa: usa pyenv + pyenv-viritualenv

Negli ambienti in cui è necessario gestire più versioni Python, è possibile trarre vantaggio da virtualenv con pyenv-virtualenv:

# Create a virtualenv for specific Python version
pyenv virtualenv 2.7.10 my-virtual-env-2.7.10

# Create a vritualenv for active python verion
pyenv virtualenv venv34

# Activate, deactivate virtualenv
pyenv activate <name>
pyenv deactivate

Quando si usano virtualenvs, è spesso utile impostare PYTHONPATH e DJANGO_SETTINGS_MODULE nello script postactivate .

#!/bin/sh
# This hook is sourced after this virtualenv is activated

# Set PYTHONPATH to isolate the virtualenv so that only modules installed
# in the virtualenv are available
export PYTHONPATH="/home/me/path/to/your/project_root:$VIRTUAL_ENV/lib/python3.4"

# Set DJANGO_SETTINGS_MODULE if you don't use the default `myproject.settings`
# or if you use `django-admin` rather than `manage.py`
export DJANGO_SETTINGS_MODULE="myproject.settings.dev"

Imposta il tuo percorso del progetto

Spesso è anche utile impostare il percorso del progetto all'interno di uno speciale file .project che si trova nella tua base <env-folder> . Quando lo fai, ogni volta che attivi il tuo ambiente virtuale, cambierà la directory attiva nel percorso specificato.

Crea un nuovo file chiamato <env-folder>/.project . Il contenuto del file dovrebbe essere SOLO il percorso della directory del progetto.

/path/to/project/directory

Ora avvia il tuo ambiente virtuale (usando source <env-folder>/bin/activate o workon my_virtualenv ) e il tuo terminale cambierà directory in /path/to/project/directory .