È possibile utilizzare le librerie di terze parti che sono un codice Python esclusivo senza estensioni C. Per questo, copiare la libreria nella directory dell’applicazione. Se la biblioteca di terze parti è già integrata e confezionata con l’ambiente di esecuzione, è possibile utilizzarlo senza copiarlo sulla tua app.
Le librerie di terze parti devono essere implementate come codice Python esclusivo senza estensioni C. copiati nella directory della tua applicazione, sono considerati per le condivisioni di file, poiché la biblioteca viene caricata al motore dell’app insieme al codice dell’applicazione.
Copia una libreria di terze parti
a Utilizzare una libreria di terze parti che non è nell’elenco delle librerie integrate e del confezionamento con l’ambiente di esecuzione, effettuare le seguenti operazioni:
-
Creare una directory per memorizzare le librerie di terze parti, come
lib/
.mkdir lib
-
USA PIP (versione 6 o successiva) con Il segno
-t <directory>
per copiare le librerie nella cartella creata nel passaggio precedente. Ad esempio:pip install -t lib/ <library_name>
Usi homebrew per Python in MacOS?
problemi di homebrew
Se usi Homebrew per Python in MacOS, potrebbe sorgere un’eccezione quando si esegue
pip install -t
. Questo problema è correlato a un problema di installazione homebrew noto (interrogazioneNote on pip install --user
) delle impostazioni Python che ha homebrew. Per risolvere questo problema, creare un file~/.pydistutils.cfg
nella tua directory principale temporaneamente con il seguente contenuto:prefix=
Assicurati di rimuovere questo file dopo aver installato i pacchetti per il motore dell’app application, come lo farà evitare di installare i pacchetti da questo contesto.
accettare -
Crea un file chiamato
appengine_config.py
nella stessa cartella del tuo file . -
Modifica il file
appengine_config.py
e fornisce la directory della libreria al metodovendor.add()
.# appengine_config.pyfrom google.appengine.ext import vendor# Add any libraries install in the "lib" folder.vendor.add('lib')
nel file
appengine_config.py
Precedente, si presume che la cartellalib
si trova nella directory della TRA Fino ad ora In alcuni casi, come il test delle unità, la directory di lavoro corrente potrebbe essere diversa. Per evitare errori, è possibile passare esplicitamente al percorso completo alla cartella iv ID = “EC4EB3F5BF” ” con quanto segue:vendor.add(os.path.join(os.path.dirname(os.path.realpath(__file__)), 'lib'))
Utilizzare i file dei requisiti pip
con librerie copiate
pip
può leggere un elenco da Biblioteche che devono essere installate da un file, noto come file dei requisiti. I file dei requisiti facilitano la configurazione di un nuovo ambiente di sviluppo per la tua app e vengono aggiornati alle nuove versioni della biblioteca.
Un file di file è un file di testo con una linea di libreria libreria il nome del pacchetto e, opzionalmente , la versione per il pacchetto (il valore predefinito è l’ultima versione):
Flask==0.10Markdown==2.5.2google-api-python-client
Per installare le librerie da un file dei requisiti, utilizzare il segno -r
in aggiunta al segno -t lib
:
pip install -t lib -r requirements.txt
Utilizzare un costruito -in Biblioteca di terze parti e confezionato con l’ambiente di esecuzione
Se la libreria di terze parti si trova nell’elenco delle librerie integrate e del confezionamento con l’ambiente in esecuzione Python sul motore dell’app, devi solo specificarlo in La direttiva sulle biblioteche in . Ad esempio:
libraries:- name: PIL version: "1.1.7"- name: webob version: "1.1.1"
APP APP fornisce automaticamente le librerie richieste durante l’implementazione.
Utilizzare le librerie integrate e confezionate con lo sviluppo locale del server
Molte delle librerie integrate che forniscono l’ambiente di esecuzione sono automaticamente disponibili per il server di sviluppo locale. Per installare alcune librerie localmente, è necessario eseguire gcloud components install app-engine-python-extras
. Se il server di sviluppo locale rileva che questo componente è necessario, ti chiederà di installarlo. Le seguenti librerie integrate devono essere installate localmente in modo da poterli utilizzare con il server di sviluppo locale:
- lxml
- matplotlib
- mysqldb
- Numpy
- pil
- crcmod
- pycrypto
- grpcio
- protobuf
È possibile utilizzare il comando PIP per installare tutti questi pacchetti dall’indice del pacchetto Python (PYPI).
sudo pip install lxml==2.3.5
Secondo la tua piattaforma, potrebbe essere necessario installare strumenti di assistenza di compilazione e fonti Python per installare queste librerie.
- In Linux, il gestore dei pacchetti può fornire questi requisiti e, spesso, è possibile fornire una versione già compilata dalla libreria.
- In Windows, gli installatori delle versioni già compilati sono in genere disponibili.
- In MacOS, gli strumenti della riga di comando di Xcode sono necessari per compilare alcuni pacchetti.
Il server di sviluppo utilizza la versione del pacchetto installato localmente, indipendentemente dalla versione specificata in . Se lo desideri, configurare un virtualV in modo che il tuo progetto fornisca la versione esatta del pacchetto. Si noti che VirtualENV viene utilizzato solo per questi pacchetti binari localmente e non sarà disponibile per la tua applicazione una volta implementato. Per aggiungere ulteriori librerie di terze parti, utilizzare il metodo descritto in Installa una libreria.
USA Django sul server di sviluppo locale
django è un quadro di applicazione web con tutte le funzioni per Python. Fornisce una batteria completa di componenti intercambiabili, come ufficio, viste, middleware, componenti di modelli e molti altri.
L’interfaccia di modellazione dei dati Django non è compatibile con il data warehouse del motore APP. È possibile utilizzare le librerie di modellazione dei dati del motore APP (DB o NDB) nelle applicazioni Django.sin, le applicazioni Django di terze parti che utilizzano l’interfaccia di modellazione dei dati di Django, in particolare l’applicazione Django Administrator, potrebbe non funzionare direttamente con il motore APP.
La libreria di modellazione DataStore (DB) è l’opzione predefinita. Per utilizzare Django con l’API di archiviazione NDB, aggiungere 'google.appengine.ext.ndb.django_middleware.NdbDjangoMiddleware',
all’ingresso MIDDLEWARE_CLASSES
nel tuo file settings.py
di Django. Si consiglia di inserirlo davanti a qualsiasi altro tipo di middleware, poiché alcuni altri middleware potrebbero chiamare l’archivio dati e le chiamate non verranno gestite correttamente se quel middleware viene invocato prima di poter ottenere. maggiori informazioni Informazioni su Django Middleware nella documentazione del progetto.
Per abilitare Django sulla tua app, specificare l’applicazione WSGI e la libreria Django in app.yaml
:
La variabile di ambiente DJANGO_SETTINGS_MODULE
deve essere configurata con il nome del modulo di configurazione Django, che di solito è 'settings'
, prima che i pacchetti vengano importati.
Se il modulo di configurazione Django non è settings.py
, configurare la variabile di ambiente come appropriato nel file app.yaml
:
env_variables: DJANGO_SETTINGS_MODULE: 'myapp.settings'
Puoi anche farlo in Il tuo codice di Python:
import os# specify the name of your settings moduleos.environ = 'myapp.settings'import django.core.handlers.wsgiapp = django.core.handlers.wsgi.WSGIHandler()
USA matplotlib
sul server di sviluppo locale
matplotlib è una biblioteca di layout che produce grafica e figure in una varietà di formati di immagine. In App Engine, le modalità Interactive MatPlotlib non sono compatibili e ci sono nemmeno altre funzioni che non sono disponibili. Ciò significa che non è possibile utilizzare pyplot.show()
, come suggerito in diverse istruzioni di matplotlib. Invece, è necessario utilizzare pyplot.savefig()
per scrivere i dati dell’immagine nella trasmissione di uscita, un’istanza cStringIO.StringIO
o stoccaggio cloud di Google utilizzando la memorizzazione della nuvola della libreria Cliente.
MATPLOTLIB consente una personalizzazione ampia utilizzando il file di configurazione matplotlibrc
, che dovrebbe essere inserito nella directory livello superiore dell’applicazione. In alternativa, è possibile impostare la variabile di ambiente in un percorso relativo alla directory della tua applicazione.
Il backend predefinito è AGG, che consente di scrivere file Di tutti i formati compatibili: PNG (il formato predefinito), RAW, PS, PDF, SVG e SVGZ. Se si consente di essere disponibile la biblioteca aggiunta aggiungendo PIL
a di , il backend AGG supporterà anche la scrittura dei formati di immagine JPEG e TIFF.
MATPLOTLIB ha diverse fonti che vengono automaticamente disponibili. È possibile utilizzare i caratteri personalizzati se li carichi in formato TTF insieme all’applicazione e configura la variabile di ambiente TTFPATH
come il percorso in cui si trovano, in relazione alla directory dell’applicazione. Per ulteriori informazioni, consultare il riferimento di app.yaml
.
Diversi funzioni MATPLOTLIB non sono compatibili con il motore APP.In particolare, considerare quanto segue:
- nessuna directory
~/.matplotlib
. Tuttavia, ci sono posizioni alternative per posizionare il file di configurazionematplotlibrc
, come descritto sopra. - backend Interactive e gli elementi GUI non sono compatibili.
- Gli arretrati EMF, Cairo e GDK non sono ammessi.
- Non vi è alcuna archiviazione memorizzata nella cache e, pertanto, diversi meccanismi ricalcolano o scaricheranno i dati che normalmente sono cache. Immettere i meccanismi di archiviazione della cache specifici disabilitati, i dati da fonti che calcolano
matplotlib.font_manager.FontManager.findfont
, i dati di esempio che scaricanomatplotlib.cbook.get_sample_data
e i dati finanziari che scaricamatplotlib.finance.fetch_historical_yahoo
.- Poiché non c’è memoria memorizzata nella cache, non è possibile chiamare con
asfileobj=False
, a meno cheexamples.download
essere impostato suFalse
.
- Poiché non c’è memoria memorizzata nella cache, non è possibile chiamare con
Li>
- L’uso di
fontconfig
è stato disabilitato. Le fonti si trovano nel meccanismo sopra descritto. - L’uso del lattice non è consentito per il rendering del testo. Imposta
text.usetex
inTrue
non funzionerà. - L’uso di un programma di sintetizzazione postscript esterno non è supportato. Imposta
ps.usedistiller
in oxpdf
non funzionerà. - L’uso di un programma di codifica video esterno è ammesso. Il metodo
matplotlib.animation.Animation.save
non funzionerà e, pertanto, il pacchettomatplotlib.animation
non è utile. - non sono consentiti né la funzione né la classe .