Anda dapat menggunakan library pihak ketiga yang merupakan kode Python murni tanpa ekstensi C, dengan menyalin library ke direktori aplikasi Anda. Jika library pihak ketiga sudah merupakan bawaan, yang dipaketkan dengan runtime, Anda dapat menggunakan library tersebut tanpa menyalinnya ke aplikasi.
Library pihak ketiga harus diterapkan sebagai kode Python murni tanpa ekstensi C. Jika disalin ke direktori aplikasi, kuota file akan berkurang karena library akan diupload ke App Engine bersama dengan kode aplikasi Anda.
Menyalin library pihak ketiga
Untuk menggunakan library pihak ketiga yang tidak ada dalam daftar library bawaan yang dipaketkan dengan runtime:
Buat direktori untuk menyimpan library pihak ketiga, seperti
lib/
.mkdir lib
Gunakan pip (versi 6 atau yang lebih baru) dengan flag
-t <directory>
untuk menyalin library ke dalam folder yang Anda buat pada langkah sebelumnya. Contoh:pip install -t lib/ <library_name>
Menggunakan Homebrew Python di macOS?
Masalah homebrew
Jika menggunakan Homebrew Python di macOS, Anda mungkin mengalami pengecualian saat menjalankan
pip install -t
. Masalah ini terkait dengan masalah penginstalan Homebrew yang diketahui (lihatNote on pip install --user
) dengan konfigurasi Python Homebrew. Untuk mengatasi masalah ini, buat sementara file~/.pydistutils.cfg
di direktori utama Anda dengan hal berikut:[install] prefix=
Pastikan Anda menghapus file ini setelah menginstal paket untuk aplikasi App Engine Anda, karena tindakan tersebut akan mencegah Anda dapat menginstal paket di luar konteks ini.
Buat file bernama
appengine_config.py
di folder yang sama dengan fileapp.yaml
Anda.Edit file
appengine_config.py
dan berikan direktori library Anda ke metodevendor.add()
.# appengine_config.py from google.appengine.ext import vendor # Add any libraries install in the "lib" folder. vendor.add('lib')
File
appengine_config.py
di atas mengasumsikan bahwa direktori kerja saat ini adalah tempat folderlib
berada. Dalam beberapa kasus, seperti pengujian unit, direktori kerja saat ini dapat berbeda. Untuk menghindari error, Anda dapat secara eksplisit meneruskan jalur lengkap ke folderlib
menggunakan:vendor.add(os.path.join(os.path.dirname(os.path.realpath(__file__)), 'lib'))
Menggunakan file persyaratan pip
dengan library yang disalin
pip
dapat membaca daftar library yang akan diinstal dari file, yang dikenal sebagai
file persyaratan. File persyaratan memudahkan penyiapan lingkungan
pengembangan baru untuk aplikasi Anda, dan upgrade ke versi library baru.
File persyaratan adalah file teks yang berisi satu baris per library, yang mencantumkan nama paket dan, secara opsional, versi untuk paket (default-nya adalah terbaru):
Flask==0.10
Markdown==2.5.2
google-api-python-client
Untuk menginstal library dari file persyaratan, gunakan flag -r
selain
flag -t lib
:
pip install -t lib -r requirements.txt
Menggunakan library pihak ketiga bawaan yang dipaketkan dengan runtime
Jika library pihak ketiga ada dalam daftar
library bawaan yang dipaketkan dengan runtime Python App Engine,
Anda hanya perlu menentukannya di perintah
library
di app.yaml
, misalnya:
libraries:
- name: PIL
version: "1.1.7"
- name: webob
version: "1.1.1"
App Engine secara otomatis menyediakan library yang diminta selama deployment.
Menggunakan library paket bawaan dengan server pengembangan lokal
Banyak library bawaan yang disediakan oleh runtime tersedia secara otomatis
untuk server pengembangan lokal. Untuk menginstal beberapa library
secara lokal, Anda harus menjalankan gcloud components install app-engine-python-extras
.
Jika server pengembangan lokal mendeteksi bahwa komponen ini diperlukan, server akan
meminta Anda untuk menginstalnya. Library bawaan berikut harus diinstal
secara lokal sebelum Anda dapat menggunakannya dengan server pengembangan lokal:
Anda dapat menggunakan perintah pip untuk menginstal semua paket ini dari Python package index (PyPI).
sudo pip install lxml==2.3.5
Bergantung pada platform, Anda mungkin perlu menginstal alat dukungan build dan sumber Python untuk menginstal library ini.
- Di Linux, pengelola paket dapat menyediakan prasyarat ini dan sering kali dapat menyediakan versi library siap pakai.
- Di Windows, penginstal untuk versi siap pakai biasanya tersedia.
- Di macOS, Alat Command Line Xcode diperlukan untuk membangun beberapa paket.
Server pengembangan menggunakan versi paket yang telah Anda instal
secara lokal, terlepas dari versi yang ditentukan dalam app.yaml
. Jika ingin,
siapkan virtualenv
untuk project Anda guna memberikan versi paket yang tepat. Perlu diperhatikan bahwa virtualenv
hanya digunakan untuk paket biner ini secara lokal, dan tidak akan tersedia untuk
aplikasi Anda setelah di-deploy. Untuk menambahkan library pihak ketiga lainnya, gunakan
metode yang dijelaskan dalam Menginstal library.
Menggunakan Django di server pengembangan lokal
Django adalah framework aplikasi web berfitur lengkap untuk Python. Library ini menyediakan full stack komponen yang dapat dipertukarkan, termasuk komponen dispatch, tampilan, middleware, dan pembuatan template, serta banyak lainnya.
Antarmuka pemodelan data Django tidak kompatibel dengan App Engine Datastore. Anda dapat menggunakan library pemodelan data App Engine (db atau ndb) dalam aplikasi Django. Namun, aplikasi Django pihak ketiga yang menggunakan antarmuka pemodelan data Django, terutama aplikasi Admin Django, mungkin tidak berfungsi secara langsung dengan App Engine.
Library pemodelan Datastore (DB) merupakan default-nya. Untuk menggunakan Django dengan
API penyimpanan NDB, tambahkan
'google.appengine.ext.ndb.django_middleware.NdbDjangoMiddleware',
ke entri MIDDLEWARE_CLASSES
dalam file
settings.py
Django Anda.
Sebaiknya masukkan di depan class middleware lain
karena beberapa middleware lain mungkin melakukan panggilan datastore dan itu tidak akan
ditangani dengan benar jika middleware tersebut dipanggil sebelum middleware ini.
Anda dapat mempelajari middleware Django lebih lanjut di
dokumentasi project.
Untuk mengaktifkan Django di aplikasi Anda, tentukan aplikasi WSGI dan library Django di
app.yaml
:
...
handlers:
- url: /.*
script: main.app # a WSGI application in the main module's global scope
libraries:
- name: django
version: "1.4"
Variabel lingkungan DJANGO_SETTINGS_MODULE
harus disetel ke nama
modul setelan Django Anda, biasanya 'settings'
, sebelum paket
diimpor.
Jika modul setelan Django Anda bukan settings.py
, setel
variabel lingkungan DJANGO_SETTINGS_MODULE
yang sesuai dalam file
app.yaml
Anda:
env_variables:
DJANGO_SETTINGS_MODULE: 'myapp.settings'
Atau di kode Python Anda:
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()
Menggunakan matplotlib
di server pengembangan lokal
Matplotlib adalah library plotting
yang menghasilkan grafik dan angka dalam berbagai format gambar. Di App Engine,
mode interaktif matplotlib tidak didukung, dan sejumlah fitur
lainnya juga tidak tersedia. Artinya, Anda tidak dapat menggunakan
pyplot.show()
seperti yang disarankan oleh tutorial matplotlib. Sebagai gantinya, Anda harus menggunakan
pyplot.savefig()
untuk menulis data gambar ke aliran output, instance
cStringIO.StringIO
, atau Google Cloud Storage menggunakan
Library Klien Cloud Storage.
Matplotlib memungkinkan
penyesuaian ekstensif
melalui penggunaan file konfigurasi matplotlibrc
, yang harus ditempatkan
dalam direktori level teratas aplikasi. Atau, Anda dapat menyetel
variabel lingkungan MATPLOTLIBRC
ke jalur yang terkait dengan direktori
aplikasi Anda.
backend
default
adalah AGG, yang memungkinkan penulisan file dalam semua format yang didukung: PNG (format
default), RAW, PS, PDF, SVG, dan SVGZ. Jika Anda menyediakan library PIL dengan
menambahkan PIL
ke bagian libraries
dari app.yaml
, backend AGG juga akan
otomatis mendukung penulisan format gambar JPEG dan TIFF.
Matplotlib dilengkapi dengan sejumlah font yang tersedia secara otomatis. Anda
dapat menggunakan font kustom dengan menguploadnya dalam format TTF bersama aplikasi
Anda, dan menyetel variabel lingkungan TTFPATH
ke jalur tempat
font kustom tersebut berada, sesuai dengan direktori aplikasi Anda. Untuk informasi selengkapnya,
lihat referensi app.yaml
.
Sejumlah fitur matplotlib tidak didukung di App Engine. Pada khususnya:
- Tidak ada direktori
~/.matplotlib
. Namun, ada lokasi alternatif untuk menempatkan file konfigurasimatplotlibrc
, seperti yang dijelaskan di atas. - Backend interaktif dan elemen GUI tidak didukung.
- Backend EMF, Cairo, dan GDK tidak didukung.
- Tidak ada penyimpanan dalam cache, sehingga sejumlah mekanisme akan menghitung ulang atau
mendownload ulang data yang biasanya akan disimpan dalam cache. Mekanisme penyimpanan dalam cache tertentu yang
telah dinonaktifkan mencakup data font yang dihitung oleh
matplotlib.font_manager.FontManager.findfont
, data contoh yang didownload olehmatplotlib.cbook.get_sample_data
dan data keuangan yang didownload olehmatplotlib.finance.fetch_historical_yahoo
.- Karena tidak ada penyimpanan dalam cache,
[matplotlib.cbook.get_sample_data](http://matplotlib.org/api/cbook_api.html#matplotlib.cbook.get_sample_data)
tidak dapat dipanggil denganasfileobj=False
kecuali jikaexamples.download
disetel keFalse
.
- Karena tidak ada penyimpanan dalam cache,
- Semua fitur yang memanggil perintah eksternal telah dinonaktifkan.
- Penggunaan
fontconfig
telah dinonaktifkan. Font ditemukan melalui mekanisme yang dijelaskan di atas. - Penggunaan LaTeX untuk rendering teks tidak didukung. Menyetel
text.usetex
keTrue
tidak akan berfungsi. - Penggunaan program penyaring PostScript eksternal tidak didukung. Menyetel
ps.usedistiller
keghostscript
atauxpdf
tidak akan berfungsi. - Penggunaan program encoding video eksternal tidak didukung. Metode
matplotlib.animation.Animation.save
tidak akan berfungsi, sehingga paketmatplotlib.animation
tidak berguna. - Fungsi
matplotlib.cbook.report_memory
dan classmatplotlib.cbook.MemoryMonitor
tidak didukung.
- Penggunaan
- Fungsi
matplotlib.test
telah dinonaktifkan.
Langkah selanjutnya
- Pelajari lingkungan runtime Pyhton App Engine lebih lanjut.
- Tinjau referensi library pihak ketiga bawaan.