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 berikutnya
- Pelajari lingkungan runtime Pyhton App Engine lebih lanjut.
- Tinjau referensi library pihak ketiga bawaan.