2010-06-03 8 views
6

Bir Python projesi için bir setup.py dosyası yazıyorum, böylece dağıtabilirim. Amaç, sonunda bir .egg dosyası oluşturmak, ancak ilk önce dikkat dağıtıcıları ve düzenli bir .zip ile çalışmaya çalışıyorum. Neden bu veri dosyalarını dağınıklıkları kullanarak bir Python dağıtımına dahil edemiyorum?

Bu

bir tutulma Pydev projedir ve benim dosya yapısı böyle bir şeydir:

ProjectName 
    src 
     somePackage 
     module1.py 
     module2.py 
     ... 
    config 
     propsFile1.ini 
     propsFile2.ini 
     propsFile3.ini 
    setup.py 

İşte şimdiye kadar benim setup.py kod:

from distutils.core import setup 

setup(name='ProjectName', 
     version='1.0', 
     packages=['somePackage'], 
     data_files = [('config', ['..\config\propsFile1.ini', 
           '..\config\propsFile2.ini', 
           '..\config\propsFile3.ini'])] 
    ) 

Bu (Sdist olarak birlikte çalıştırdığınızda bir komut satırı parametresi), bir .zip dosyası tüm python dosyaları ile oluşturulur - ancak yapılandırma dosyaları dahil değildir.

data_files = [('config', ['..\config\propsFile1.ini', 
            '..\config\propsFile2.ini', 
            '..\config\propsFile3.ini'])] 

o 3 Belirtilen yapılandırma dosyaları zip dağılımında "yapılandırma" dizinine kopyalanmış gerektiğini gösterir: Bu kod düşündük. Bu kod neden bir şey başarmıyor? Neyi yanlış yapıyorum?

(Ben de yapılandırma dosyalarının yolları ile uğraşırken denedi ... Ama hiçbir şey yardımcı olacak gibi görünüyor. Yolunun yanlış olsaydı misiniz Python bir hata ya uyarı/dosya bulunamadı?)

cevap

1

Son olarak, tüm config dizinini src klasörüne taşıyarak çalıştım. Bu benim yollarımın kapalı olduğu anlamına geliyor ... ama bir dizini yedeklemenin bir yolunu göremediğimden (".. \" bir fark yaratmadı), bu çözüme bağlı kalacağım. şimdilik.

6

böyle bir MANIFEST.in dosyası oluşturun:

include config\* 

(DÜZENLEME) daha fazla bilgi için buraya bakın: http://docs.python.org/distutils/sourcedist.html#specifying-the-files-to-distribute

+0

Teşekkürler. Aşağıdaki hatayı alıyorum: 'uyarı: 'config \ *'' ile eşleşen dosya bulunamadı. Ben değiştirmeye çalıştım .. \ config \ * ama bu da herhangi bir fikre ya da ... – froadie

+0

'\' ve '*' arasında bir boşluk var. Bunu kaldırmayı dene? Aksi takdirde eğik çizgiyi kullanmayı deneyin. Eğik çizgiyi kullandım, ama ters eğik çizgiyi kullandığınız için '/' yerine '\' ile değiştirdim. Ancak, Windows'da herhangi bir soruna neden olan/kullanmayanı buldum. şey gibi, içine dosya adları hardcoding tarafından doğru yolda olup olmadığını kontrol edin çalışıyorsa: yapılandırma içerme/propsFile1.ini vb config/propsFile2.ini # ... – Umang

+0

dahil uzay sadece oldu SO formatlama nedeniyle - onları bir araya getirdiğimde bir sebepten dolayı eğik çizgi gizledim. Eğik çizgiyi değiştirmek bir fark yaratmıyor ... Python otomatik olarak onu geri çeviriyor, aynı hata mesajını veriyor. Tek tek dosyalar üzerinde aynı hatayı al ... :(herhangi bir ipucu neyin var? Bir yol sorunu mu? – froadie

0

seni de ters eğik çizgi kaçış zorunda tahmin dosya; ör. '..\config\whatever' yerine, '..\\config\\whatever' yazın veya ham dize sözdizimini kullanın: r'..\config\whatever'.

+0

Bunu denedim ("config dosyalarının yolları ile uğraşmayı denedim") ve bir fark yaratmadığı anlaşılan şeylerden biri ... – froadie

+0

Distutils her zaman eğik çizgi kullanır. –

İlgili konular