2012-08-22 10 views
10

Una cosa che mi piace di progetti Rails è che durante la distribuzione a un server remoto, se tutto è impostato correttamente si può semplicemente fare:Django ha un equivalente di "bundle install" di Rails?

$: bundle install 

E il sistema installerà le varie dipendenze (gemme del rubino) necessari per eseguire il progetto.

C'è qualcosa di simile per Python/Django?

risposta

11

Si possono congelare requisiti. Questo genera un elenco di tutti i moduli Python necessari per il tuo progetto. Credo che lo bundle sia simile nel concetto.

Ad esempio:

virtualenv --no-site-packages myproject_env # create a blank Python virtual environment 
source myproject_env/bin/activate # activate it 
(myproject_env)$ pip install django # install django into the virtual environment 
(myproject_env)$ pip install other_package # etc. 
... 
(myproject_env)$ pip freeze > requirements.txt 

L'ultima riga genera un file di testo saranno tutti i pacchetti che sono stati installati nel proprio ambiente personalizzato. È possibile utilizzare tale file per installare gli stessi requisiti su altri server:

pip install -r requirements.txt 

Naturalmente non è necessario utilizzare pip, è possibile creare il file di requisiti a mano; non ha requisiti di sintassi speciali. Solo un pacchetto e (possibilmente) identificatore di versione su ogni riga. Ecco un esempio di un tipico progetto django con alcuni pacchetti aggiuntivi:

Django==1.4 
South==0.7.4 
Werkzeug==0.8.3 
amqplib==1.0.2 
anyjson==0.3.1 
celery==2.5.1 
django-celery==2.5.1 
django-debug-toolbar==0.9.4 
django-extensions==0.8 
django-guardian==1.0.4 
django-picklefield==0.2.0 
kombu==2.1.4 
psycopg2==2.4.5 
python-dateutil==2.1 
six==1.1.0 
wsgiref==0.1.2 
xlwt==0.7.3 
+0

funziona bene, grazie. – nemesisdesign

3

Il più vicino è probabilmente virtualenv, pip e uno requirements file. Con questi 3 ingredienti è abbastanza facile scrivere un semplice script di bootstrap.

Più impegnativo e complesso è buildout. Ma lo farei solo se virtualenv e pip non sono sufficienti.

E se si estende questo approccio con fabric e facoltativo cuisine, la distribuzione del progetto è già stata automatizzata. Scopri questi link per ulteriori informazioni:

Problemi correlati