2013-02-13 13 views
30

Come aggiungere librerie python di terze parti in Google App Engine, che non sono fornite da Google? Sto cercando di utilizzare BeautifulSoup in Google App Engine e non riesco a farlo. Ma la mia domanda è per qualsiasi libreria che voglio utilizzare in Google App Engine.Come includere librerie Python di terze parti in Google App Engine?

+0

possibile duplicato di [Come gestisco le librerie Python di terze parti con Google App Engine? (virtualenv? pip?)] (http://stackoverflow.com/questions/4863557/how-do-i-manage-third-party-python-libraries-with-google-app-engine-virtualenv) – Wernight

risposta

43

In realtà penso che this answer si adatti meglio qui.

Se si desidera utilizzare librerie di terze parti non incluse in this list, sarà necessario aggiungerle manualmente.

Per includere manualmente qualsiasi altra libreria, è necessario averli all'interno della directory in cui si trova lo app.yaml. Così, per esempio, se si ha la seguente struttura:

hello 
├── libs 
│ └── bs4 
├── hello.py 
└── app.yaml 

poi nel vostro hello.py bisogna mettere queste due righe all'inizio del file:

import sys 
sys.path.insert(0, 'libs') 

dopo aver fatto che sarete in grado per utilizzare qualsiasi libreria di terze parti che inserirai nella directory libs.

Ad esempio:

from bs4 import BeautifulSoup 
+0

Non riesco a farlo funzionare dopo averlo spostato in libs –

+0

Il mio male, finalmente funziona. Grazie –

+0

Ho ancora problemi con questo dopo aver seguito le indicazioni. Qualcosa è cambiato con GAE? –

0

Basta mettere BeautifulSoup nella root del vostro progetto e caricarlo tutto

+0

Posso mettere in una cartella specifica come "lib"? –

+1

yes manipola sys.path o usa il modulo del sito come in 'site.addsitedir ('lib') –

3

È sufficiente copiare la cartella che contiene la libreria che si desidera utilizzare nel progetto App Engine.

Quindi quando viene distribuito, viene caricato con l'applicazione ed è disponibile per l'uso.

MODIFICA: Jesse's answer è come ora faccio questo. Quindi fallo!

1

Il modo in cui ha funzionato qui è:

import sys 
# sys.path.insert(0, 'libs') #"Old" way, not working for me. 
sys.path.append(os.path.join(os.path.dirname(__file__), "libs")) # This works! 

Poi importare normalmente:

from bs4 import BeautifulSoup 
50

Google ha fornito un modo documentato per la dotazione di terze parti librerie nel tuo progetto GAE.

Vedere "Adding Third-party Packages to the Application" section of the Libraries in Python 2.7 docs.

Se si desidera includere ulteriori pacchetti di terze parti pure python, è possibile farlo impostando il fornitore. Il venditore consente di installare pacchetti in una sottodirectory del progetto e includerli nel codice. Per utilizzare il venditore, creare (o modificare) appengine_config.py nella radice del progetto.

from google.appengine.ext import vendor 
# Add any libraries installed in the "lib" folder. 
vendor.add('lib') 

E poi appena messo tutto il codice sorgente vostre librerie nel vostro lib dir

> pip install beautifulsoup4 -t lib 

Quindi la struttura di directory del progetto si presenta così:

project 
- lib 
    - bs4 
- your_code.py 

Questo permetterà al i file sorgente del progetto per importare i pacchetti/moduli della lib come se fossero stati aggiunti al tuo PYTHON_PATH. Per esempio:

# file: your_code.py 
import bs4 # no need for 'from lib import bs4' 
# do stuff with bs4... 

Si può anche facilmente installare tutto da un file requirements.txt effettuando il seguente comando

> pip install -t lib -r requirements.txt 
+2

Questa risposta sembra essere migliore di quella accettata. Grazie Jesse! –

+2

questo ha funzionato per me per molto tempo, ma ha iniziato a fallire inspiegabilmente. Ora sto ottenendo 'virtualenv: non posso accedere a lib: nessuna virtualenv o directory del sito' – bgenchel

+0

Sto ottenendo la stessa cosa adesso. Strano. –

0

pip installare -t nome_pacchetto lib

lib: il posizione per le librerie di terze parti

Quindi sei bravo a usa questo pacchetto come una normale libreria che usi da ipython o terminale.

Problemi correlati