2012-06-07 17 views
15

Temelde benim piton paket kurulumu gibidir:Paket verilerinin bir parçası olarak distel'leri (setup.py) kullanarak alt dizinleri eklemek mümkün mü?

module 
\_examples 
    \_folder1 
    \_file1.py 
    \_file2.py 
    \_folder2 
    \_file1.py 
    \_file2.py 

Temelde istediğim sadece kullanmak: Projemi hep örnekler ekleyerek insanlar vardır ve istediğim

package_data = { 
      'module': ['examples/*'], 
    }, 

çünkü onları listelemek kolay olması benim başvurumda. Örnekler içinde herhangi bir DOSYA için çalışabilirim, ancak alt dizinlere yeniden küfür etmeyebilirim. Mümkün mü?

cevap

1

Bunun için bir MANIFEST.in dosyası kullanmanız gerekecek.

Ben böyle bir şey isteyeceksiniz inanıyoruz:

Ne aradığınızı inanıyoruz
 
$ cat MANIFEST.in 
recursive-include examples/ *.py 
+0

kullanmamalısınız ama oldukça kesin bulamadığında anlatır başka link şu anda cevap ver. –

+1

Hrm, yaptığım gibi bir deneme yapmam gerekecek: özyinelemeli örnekler * .py ve /. Bunu MANIFEST.in de kullanımdan kaldırıldığını okudum. Sanırım python işlev çağrısı yöntemini takip etmek zorunda kalabilirim. – xamox

+2

Oh… Python ile nasıl yapılacağını anlarsanız, lütfen buraya gönderin. Bilmek isterdim. –

28

yinelemeli projede herhangi paketleri bulacaksınız sizin setup.py için böyle bir şey olduğunu, ayrıca emin olun ve istediğiniz her paketin alt dizinlerine __init__.py dosyaları ekleyin.

from setuptools import setup, find_packages 

setup(name='MySoftware', 
    packages=find_packages() 
} 
+0

Burada dikkatli olun, çünkü siz açıkça test dizilerini vb. Dahil edemezsiniz. – Arminius

1

Evet, tüm alt dizinleri ekleyebilirsiniz.

Sadece kurulum için aşağıdaki args geçmesi gerekiyor() fonksiyonu:

packages=find_packages() 

include_package_data=True 

Eğer

recursive-include examples * 

Bu olmasını sağlar olarak içeriği ile, bir MANIFEST.in dosyasına ihtiyacınız Bunun yanında tüm dosyalar yinelemeli olarak dahil edilmiştir.

Belirli uzantıları özel olarak hariç tutmak istiyorsanız, bunu find_packages() argümanında exclude dizisini belirterek yapabilirsiniz.

Ör: Daha fazla yaklaşık include_package_datahere okuyabilir .txt dosyaları

packages=find_packages(exclude=['.txt']) 

dışında bırakın.

Ve ayrıca here Ben doğrudan da dosya ve dizinleri bulmak için setup.py dosyası içerisine Python işlevlerini kullanabilirsiniz düşünüyorum include_package_data

İlgili konular