SORU
1 ŞUBAT 2011, Salı


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
1 ŞUBAT 2011, Salı


Ne yapalım bu işte:

  • proje
    • .Python
    • bin
    • lib
      • python2.5
        • site-paketleri
          • &; pip paketleri burada ^ yükleyin lt .
    • 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_points 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.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Adam Washington

    Adam Washing

    12 Mayıs 2006
  • tatermoog

    tatermoog

    2 AĞUSTOS 2006
  • WiseOwlTutorials

    WiseOwlTutor

    21 EKİM 2011