2012-12-19 20 views
8

Biraz garip bağımlılıkları olan bir Python paketini debianizing ediyorum. Ya: python2.7 Gruplanmış koşullu bağımlılıkları debian/control olarak tanımlamanın herhangi bir yolu var mı?

  • benim setup.py yılında Örneğin
  • (PyPI üzerinde ordereddict benim kendini inşa pakette) python2.6 ve python-ordereddict bağlıdır üzerinde

    • bağlıdır Ben:

      deps = ["Flask >=0.8"] 
      if not hasattr(collections, "OrderedDict"): # Python 2.6 
          deps.append("ordereddict") 
      
      setup(
          … 
          install_requires=deps, 
          … 
      ) 
      

      Bu konuda Debian paket belgelerinde hiçbir şey bulamadım.

      dpkg-gencontrol: warning: can't parse dependency (python2.6 
      
      Ben dh_python2 kullanıyorum

      ve ${python:Depends} oldukça mantıksız sağlar: Sadece durup dururken ben Ama, hayır şaşırtıcı işe yaramadı yanlış sözdizimi

      Depends: ..., python2.7 | (python2.6, python-ordereddict) 
      

      yazma denedim böyle bağımlılık listeyle

      Depends: python2.7 | python2.6, python (>= 2.7.1-0ubuntu2), 
          python (<< 2.8), python-flask, python-ordereddict 
      

      gibi liste, var olmadığı python2.7 için python-ordereddict, gerek duyarız. Ve açıkçası,(python-argparse ile yapıldığı gibi) demek için python2.7-minimal'u ekleyemiyorum.

      Kitaplıkların nasıl doğru şekilde paketleneceğine dair herhangi bir öneri lütfen.

    cevap

    5

    Bir seçenek 'un python2.6 numaralı telefona bağlı olmasına izin verin, sonra ana paketinizin python2.7 | python-ordereddict'a bağlı olmasına izin verin. Bu sürümde OrderedDict mevcut olduğundan, python-ordereddict'u 2.7 ile kurmak mantıklı değil. Tabii ki, bu çirkin çünkü ana paketin bağımlılığını kütüphaneye itiyor. Alternatif, bağımlılıkların conjunctive normal form (CNF) 'de önerilen formüller olması gerektiğini fark etmektir. önermeler mantığının distributive law uygulayarak, eşdeğer CNF

    python2.7 | python2.6, python2.7 | python-ordereddict 
    

    (özellikle oldukça ya olmadığı, itiraf,) için

    python2.7 | (python2.6, python-ordereddict) 
    

    dönüştürebilirsiniz.

    İlgili konular