2013-12-10 21 views
9

Ho installato pytz (v2013.8, ma succede nel 2013.b, 2011k) in un virtualenv. La prima chiamata aLa prima chiamata a pytz.timezone è lenta in virtualenv

pytz.timezone("US/Eastern") 

richiede circa 4 secondi. In un ambiente normale questo è essenzialmente istantaneo.

Qualcuno ha un trucco per farlo funzionare più velocemente?

+1

Bella auto-risposta! –

+1

Questo potrebbe rivelarsi molto utile in futuro, buon lavoro! :) Considera il ripubblicare come risposta quando hai bisogno di un rappresentante. – BartoszKP

risposta

12

In realtà ho trovato la risposta giocando e guardando il codice sorgente. Dal momento che ottiene le sue impostazioni del fuso orario dall'interno dell'uovo e la prima chiamata al fuso orario deve verificare che tutti i file del fuso orario esistano, la prima chiamata potrebbe essere lenta a seconda di come il sistema operativo deve trovare quei file. Se pytz viene installato utilizzando apt-get install python-tz, quindi chiama i file non compressi ed è molto veloce. Se viene installato utilizzando easy_install pytz, viene ripetuto un file compresso più e più volte ed è più lento.

Quindi la soluzione è di decomprimerlo. Per fortuna pip ha un comando pratico.

tl; dr

pip unzip pytz 
1

Sembra che in Windows basta cancellare pytz-2013.9-py2.7.egg

1

Ho avuto un momento difficile esecuzione

pip decomprimere pytz

come si dice non riesce a trovare il pacchetto. Una soluzione che ho trovato che funziona è stato quello di modificare il file setup.py e sostituendo

zip_safe = False

. (Impostalo su False). Quindi eseguire nuovamente il programma di installazione:

python setup.py install

Ciò ha risolto il mio problema del tempo di caricamento lento pure.

Problemi correlati