Nasıl Google App Engine ile üçüncü parti Python kütüphaneleri yönetirim? (virtualenv? pip?)
Google App Engine ile üçüncü parti Python kütüphaneleri yönetmek için en iyi strateji nedir?
Flask, bir web çerçeve kullanmak istiyorum diyelim. A blog entry doğru görünmüyor hangi bunu yapmak için, diyor ki:
$ cd /tmp/
$ wget http://pypi.python.org/packages/source/F/Flask/Flask-0.6.1.tar.gz
$ tar zxf Flask-0.6.1.tar.gz
$ cp -r Flask-0.6.1/flask ~/path/to/project/
(... repeat for other packages ...)
Özellikle sürümleri, test yükseltmeleri izlemek istiyorum ya eğer iki kitaplık bir alt paylaşırsanız daha iyi bir şekilde üçüncü taraf kod yönetmek için olmalı. Bu Python zipfiles gelen modüller ve bunu alabilir biliyorumpipharika GEREKSİNİMLERİ bir dosya ile çalışabilir, ve bunu gördümpipGAE In ile birlikte kullanmak için zip
bir komut vardır.
(Not: bir avuç benzer sorular— 1, 2, 3, 4, 5 — ama bunlar davaya özgü ve yok gerçekten soruma cevap ver.)
CEVAP
Ne yapalım bu işte:
- proje
- .Python
- bin
- lib
- python2.5
- site-paketleri
- &; pip paketleri burada ^ yükleyin lt .
- site-paketleri
- python2.5
- vardır
- src
- app.yaml
- dizin.yaml
- ana.yaml
- &; pip ../lib/python2 paketleri yüklü sembolik lt.5/site-paketleri
project
dizin virtualenv oturur üst düzey dizin. Aşağıdaki komutları kullanarak: virtualenv
cd project
virtualenv -p /usr/bin/python2.5 --no-site-packages --distribute .
src
dizin tüm kod nereye gider. Kodunuzu GAE dağıtırken,*sadece*src dizininde o ve başka bir şey dağıtmak. appcfg.py
sembolik bağları çözmek ve kütüphane dosyaları için GAE için kopyalar.
Çok sadece meraktan söylüyorum ki kaynak kodu, okumak istiyorum diye zip, özellikle kolaylık için dosyaları olarak benim kitaplıkları yüklemek istemiyorum. Eğer gerçekten kitaplıkları zıp ki, main.py aşağıdaki kod parçası koymak
import sys
for p in ['librarie.zip', 'package.egg'...]:
sys.path.insert(0, p)
Sonra bu kadar sıkıştırılmış paketleri her zamanki gibi alabilirsiniz.
Olduğu için göz önüne alınması gereken bir şey setuptools' pkg_resources.py
. Doğrudan src
benim dizine yani diğer symlinked paketleri kullanabilirsiniz kopyaladım. entry_point
s kullanan herhangi bir şey için dikkat et. Benim durumumda Toscawidgets2 kullanıyorum ve kaynak kodu kazmak için el ile parçaları bir tel vardı. Eğer entry_point
kullanan pek çok kütüphane varsa can sıkıcı olabilir.
Nasıl/çıkış/python virtualenv devre dı...
Nasıl kendi alanı () alt alan adı ile ...
Seçme Java vs Google App Engine Python...
Nasıl Google App Engine, tüm veri depo...
Nasıl Google App Engine JSON ayrıştırm...