Puoi utilizzare librerie di terze parti che sono Python puro senza estensione C, copiando la libreria nell'applicazione . Se la libreria di terze parti è già integrata, in bundle con il runtime, puoi utilizzare la raccolta senza copiarla nell'app.
Le librerie di terze parti devono essere implementate come codice Python puro senza codice C estensioni. Se copiati nella directory dell'applicazione, vengono conteggiati ai fini del calcolo perché la libreria viene caricata in App Engine insieme all'applicazione le API nel tuo codice.
Copia di una raccolta di terze parti
Per utilizzare una libreria di terze parti non presente nell'elenco delle librerie integrate in bundle con il runtime:
Crea una directory in cui archiviare le tue librerie di terze parti, ad esempio
lib/
.mkdir lib
Utilizza pip (versione 6 o in seguito) con il flag
-t <directory>
per copiare le librerie nella cartella creato nel passaggio precedente. Ad esempio:pip install -t lib/ <library_name>
Utilizzi Homebrew Python su macOS?
Problemi con la birra in casa
Se usi Homebrew In Python su macOS, potresti riscontrare un'eccezione durante l'esecuzione
pip install -t
. Questo problema è correlato a un problema noto di installazione di Homebrew. (vediNote on pip install --user
) con la configurazione Python di Homebrew. Per aggirare il problema, crea temporaneamente un file~/.pydistutils.cfg
nella tua home directory con quanto segue:[install] prefix=
Assicurati di rimuovere questo file dopo aver installato i pacchetti per App Engine in quanto impedirà l'installazione di pacchetti al di fuori di questo contesto.
Crea un file denominato
appengine_config.py
nella stessa cartella del tuo fileapp.yaml
.Modifica il file
appengine_config.py
e fornisci la directory della tua raccolta alle Metodovendor.add()
.# appengine_config.py from google.appengine.ext import vendor # Add any libraries install in the "lib" folder. vendor.add('lib')
Il file
appengine_config.py
sopra riportato presuppone che lo stato attuale è la posizione in cui si trova la cartellalib
. In alcuni casi, ad esempio per l'unità la directory di lavoro corrente può essere diversa. Per evitare errori, può passare esplicitamente il percorso completo alla cartellalib
utilizzando:vendor.add(os.path.join(os.path.dirname(os.path.realpath(__file__)), 'lib'))
Utilizzo dei file dei requisiti di pip
con le librerie copiate
pip
può leggere un elenco di librerie da installare da un file, noto come
file dei requisiti. I file dei requisiti semplificano la configurazione di un nuovo
ambiente di sviluppo per la tua app ed esegui l'upgrade alle nuove versioni delle librerie.
Un file dei requisiti è un file di testo con una riga per libreria, in cui sono elencati nome del pacchetto e, facoltativamente, la versione del pacchetto (il valore predefinito è più recente):
Flask==0.10
Markdown==2.5.2
google-api-python-client
Per installare le librerie da un file dei requisiti, usa anche il flag -r
al flag -t lib
:
pip install -t lib -r requirements.txt
Utilizzo di una libreria di terze parti integrata in bundle con il runtime
Se la libreria di terze parti è nell'elenco di
librerie integrate in bundle con il runtime Python di App Engine,
devi specificarlo nel
istruzione libraries
in app.yaml
, ad esempio:
libraries:
- name: PIL
version: "1.1.7"
- name: webob
version: "1.1.1"
App Engine fornisce automaticamente le librerie richieste durante il deployment.
Utilizzo di librerie integrate in bundle con il server di sviluppo locale
Molte delle librerie integrate fornite dal runtime vengono automaticamente
disponibili per il server di sviluppo locale. Per installare alcune librerie
in locale, devi eseguire gcloud components install app-engine-python-extras
.
Se il server di sviluppo locale rileva che questo componente è necessario,
di installarlo. È necessario installare le seguenti librerie integrate
localmente prima di poterli utilizzare con il server di sviluppo locale:
Puoi utilizzare il simbolo pip per installare tutti questi pacchetti Indice di pacchetti Python (PyPI).
sudo pip install lxml==2.3.5
A seconda della piattaforma, potrebbe essere necessario installare strumenti di assistenza alla creazione e origini Python per installare queste librerie.
- Su Linux, il gestore di pacchetti può fornire questi prerequisiti e spesso può fornisce una versione predefinita della libreria.
- Su Windows, in genere sono disponibili programmi di installazione per le versioni predefinite.
- Su macOS, per creare alcuni pacchetti sono necessari gli strumenti a riga di comando Xcode.
Il server di sviluppo utilizza la versione del pacchetto installata
localmente a prescindere dalla versione specificata in app.yaml
. Se vuoi,
per configurare un cluster virtualenv
per il progetto per fornire la versione esatta del pacchetto. Tieni presente che la virtualenv
viene utilizzato solo per questi pacchetti binari in locale e non sarà reso disponibile
dell'applicazione dopo il deployment. Per aggiungere altre librerie di terze parti, utilizza
il metodo descritto in Installazione di una libreria.
Utilizzo di Django nel server di sviluppo locale
Django è una piattaforma completa framework di applicazioni web per Python. Offre uno stack completo di modelli componenti, tra cui invio, visualizzazioni, middleware e componenti di creazione di modelli, e molti altri.
L'interfaccia di modellazione dei dati di Django non è compatibile con App Engine datastore. Puoi utilizzare le librerie di modellazione dei dati di App Engine (db o ndb) sul tuo Django diverse applicazioni. Tuttavia, le applicazioni Django di terze parti che utilizzano i dati di Django , in particolare l'applicazione Admin di Django, non funzionano direttamente con App Engine.
La libreria di modelli Datastore (DB) è l'impostazione predefinita. Per utilizzare Django con
API NDB Storage, aggiungi
'google.appengine.ext.ndb.django_middleware.NdbDjangoMiddleware',
alla voce MIDDLEWARE_CLASSES
nel tuo Django
settings.py
.
È una buona idea inserirlo prima di qualsiasi altra classe middleware,
poiché alcuni altri middleware potrebbero effettuare chiamate al datastore
gestito correttamente se questo middleware viene richiamato prima di questo middleware.
Puoi scoprire di più sul middleware Django nel
documentazione del progetto.
Per abilitare Django nella tua app, specifica l'applicazione WSGI e la libreria Django in
app.yaml
:
...
handlers:
- url: /.*
script: main.app # a WSGI application in the main module's global scope
libraries:
- name: django
version: "1.4"
La variabile di ambiente DJANGO_SETTINGS_MODULE
deve essere impostata sul nome di
il modulo delle impostazioni di Django, in genere 'settings'
, prima che i pacchetti vengano
importati.
Se il modulo delle impostazioni di Django è diverso da settings.py
, imposta il valore
DJANGO_SETTINGS_MODULE
di conseguenza nel tuo
File app.yaml
:
env_variables:
DJANGO_SETTINGS_MODULE: 'myapp.settings'
Oppure nel codice Python:
import os
# specify the name of your settings module
os.environ['DJANGO_SETTINGS_MODULE'] = 'myapp.settings'
import django.core.handlers.wsgi
app = django.core.handlers.wsgi.WSGIHandler()
Utilizzo di matplotlib
nel server di sviluppo locale
Matplotlib è una libreria di tracciamento
che produce grafici e figure in vari formati di immagine. In App Engine,
le modalità interattive di matplotlib non sono supportate e sono disponibili
funzionalità non sono disponibili. Ciò significa che non puoi utilizzare
pyplot.show()
come suggeriscono i tutorial su matplotlib. Dovresti invece usare
pyplot.savefig()
per scrivere i dati immagine nel flusso di output,
cStringIO.StringIO
o Google Cloud Storage utilizzando
Libreria client di Cloud Storage.
Matplotlib consente
ampia personalizzazione
mediante l'uso del file di configurazione matplotlibrc
, che dovrebbe essere posizionato
nella directory di primo livello dell'applicazione. In alternativa, puoi impostare
MATPLOTLIBRC
in un percorso relativo all'applicazione
.
Il valore predefinito
backend
è AGG, che consente di scrivere file di tutti i formati supportati: PNG (l'impostazione predefinita
), RAW, PS, PDF, SVG e SVGZ. Se rendi disponibile la libreria PIL
aggiungendo PIL
alla sezione libraries
di app.yaml
, il backend AGG eseguirà
supporta automaticamente anche la scrittura di formati di immagini JPEG e TIFF.
Matplotlib viene fornito con una serie di font che sono disponibili automaticamente. Tu
puoi usare i caratteri personalizzati caricandoli in formato TTF insieme ai
e impostando la variabile di ambiente TTFPATH
sul percorso in cui
rispetto alla directory dell'applicazione. Per ulteriori informazioni,
consulta app.yaml
riferimento.
Alcune funzionalità di matplotlib non sono supportate su App Engine. In particolare:
- Nessuna directory
~/.matplotlib
. Tuttavia, esistono alternative posizioni in cui inserire il file di configurazionematplotlibrc
, come descritto sopra. - Gli elementi GUI e i backend interattivi non sono supportati.
- I backend EMF, Cairo e GDK non sono supportati.
- Non c'è memorizzazione nella cache, quindi diversi meccanismi ricalcoleranno o
scaricare di nuovo i dati che normalmente verrebbero memorizzati nella cache. Meccanismi di memorizzazione nella cache specifici
sono state disattivate, includono dati carattere calcolati da
matplotlib.font_manager.FontManager.findfont
, dati di esempio scaricati damatplotlib.cbook.get_sample_data
e i dati finanziari scaricati damatplotlib.finance.fetch_historical_yahoo
- In assenza di una memorizzazione nella cache, non è possibile richiamare
[matplotlib.cbook.get_sample_data](http://matplotlib.org/api/cbook_api.html#matplotlib.cbook.get_sample_data)
conasfileobj=False
, a meno cheexamples.download
non sia impostato suFalse
.
- In assenza di una memorizzazione nella cache, non è possibile richiamare
- Tutte le funzionalità che richiamano comandi esterni sono state disattivate.
- L'utilizzo di
fontconfig
è stato disattivato. I caratteri si trovano tramite meccanismo di attenzione descritto sopra. - L'utilizzo di LaTeX per il rendering del testo non è supportato. Impostazione di
text.usetex
aTrue
non funzionerà. - L'utilizzo di un programma di distillatore PostScript esterno non è supportato. Impostazione
ps.usedistiller
aghostscript
oxpdf
non funzioneranno. - L'utilizzo di un programma di codifica video esterno non è supportato. La
matplotlib.animation.Animation.save
non funzionerà, pertanto ilmatplotlib.animation
non è utile. - La
matplotlib.cbook.report_memory
ematplotlib.cbook.MemoryMonitor
non sono supportati.
- L'utilizzo di
- La funzione
matplotlib.test
è stata disabilitata.
Passaggi successivi
- Scopri di più sull'ambiente di runtime Python di App Engine.
- Consulta il riferimento sulle librerie di terze parti integrate.