2009-04-22 21 views
10

Orijinal paketi orijinal biçiminde almak için indirilebilen bir biçimde, PyPI'ye bir paket yüklemek için sihir "python setup.py some_incantation_here" komutu nedir?PyPI'ye bozulmamış bir Python paketi nasıl yüklenir?

Bazı kaynaklara ve birkaç görüntü dosyasına (package_data olarak) sahip bir paketim var. "setup.py sdist register upload" yaparsam, .tar.gz resim dosyaları hariç tutulur. "setup.py bdist_egg register upload" yaparsam, yumurta görüntüler içeriyor ancak setup.py dosyasını hariç tutuyor. Projemin tamamı olan "setup.py the_whole_freaking_thing register upload" adlı bir dosya yükleyebilmeyi istiyorum.

Belki de bunu yapmanın en iyi yolu proje dizinimi manuel olarak tar.gz ve PyPI web arayüzünü kullanarak yüklemek.

Caveat: Ben sadece SVN repo'mda ve PyPI'de oluşturduğum basit bir projeyi saklamaktan kaçınmaya çalışıyorum - tarihini ve dosyalarını iki yerde tutmak için iş kaybı gibi görünüyor .

cevap

16

Bir "sdist" komutu gerçekleştirdiğinizde, "package_data" içinde listelediğinizi değil, "setup.py" nin yanında oturan "MANIFEST.in" dosyanız, dahil edilen dosyaların listesini kontrol eder. Bu, bugün Python ambalaj çözümlerinin şizofrenik doğasıyla ilgili bir şey var; "sdist" standart kitaplıktaki distutils tarafından desteklenirken, "bdist_egg" setuptools modülü tarafından denetlenir.

sorunu çözmek için, setup.py dosyanın yanındaki bir MANIFEST.in oluşturmayı deneyin ve bunun gibi o içeriği vermek: Ben görüntüleme olduğum Tabii

include *.jpg 

senin "görüntü dosyaları" disk görüntüleri veya ISO görüntüleri veya bir şey yerine gerçek resimlerdir; Yanlış tahmin ettiğimde yukarıdaki satırı ayarlamanız gerekebilir! Ancak distutils belgelerinin Specifying which files to distribute bölümüne bakın ve bu dosyaların .tar.gz kaynak dağıtımınızda görünüp görünemeyeceğini öğrenin! İyi şanslar.

+0

Mükemmel! "include nosenotify/*. png", dosyalarımın bir altdizinindeyken ihtiyacım olan formattı. Bu format, .tar.gz nosenotify/dizininin .png dosyalarını içermesini sağladı. –

+2

PS Brandon, cevabınızı okuduktan sonra ironik olarak blogunuza gittim ve soruyu bir gün öncesinden gördüm. Bu, setup.py'nin piro yaptığını söyleyerek bıktığınızı söyledi. :) –

İlgili konular