2012-05-05 22 views
12

Dosyalarımı özel dizinlere yükleyen bir setup.py oluşturmak istiyorum.python setup.py yapılandırma

/my/prefix/ 
    bin/ 
    script.sh 
    libexec/ 
    one.py 
    two.py 
    ... 
    lib/pythonX.Y/site-packages/ 
    package/... 

Benim ilk proje takip ediyor:

/ 
    script.sh 
    one.py 
    two.py 
    ... 
    setup.py 
    package/... 
    __init__.py 
    ... 

Ne Bunu başarmak için en iyi yol olacağını ben şu sonucu almak istiyorum belli bir önek var? Varsayılan --prefix olduğu altında

python setup.py install --prefix=/my/prefix 
Ben "paket" güzel lib/pythonX.Y/site paketleri olarak doğru dizinde yüklü alabilirsiniz

: Ben böyle bir şey ile daha sonra yüklemek mümkün olmak istiyorum yer. Ama script.sh "bin" ve diğer python dosyalarını "libexec" içine almak için temiz bir yol var mı? Bunu başarmak için görebildiğim tek yolu, bu dosyaları setup.py betiğimde elle kopyalamak olacaktır. Olabilir daha temiz ve daha standart bir yolu var mı?

(düzenleme)

Çözüm

böyle setup.py dosyası ile sona erdi:

Tabii
setup(name='mylib', 
    scripts=['script.sh'], 
    data_files=[('libexec', ['one.py', 'two.py'])] 
) 

, sen libexec için tüm piton dosyaları üzerinde yineleme olabilir, ama Sadece ihtiyacım olan 2-3 python dosyası var.

(edit2) Ayrıca

, aşağıdaki ile Setup.cfg gelmiş olabilir

:

[install] 
prefix=/my/prefix 

ve yerine python setup.py install --prefix=/my/prefix yapmam sadece edebilirsiniz:

python setup.py install 
+0

Burada yararlı bazı dokümanlar var: https://docs.python.org/2/install/index.html#alternate-installation-unix-the-prefix-scheme ve burada https: //docs.python. org/3/distutils/introdu.html – Pierz

cevap

8

komut işlenir scripts parametresinin ayar fonksiyonuna göre kullanılması. Libexec için bunları veri dosyaları olarak ele alabilir ve bir veri seçeneği kullanabilirsiniz. Bunun --prefix seçeneği ile nasıl çalışacağını emin değilim

setup(... 
    scripts=glob("bin/*"), 
    data_files=[(os.path.join(sys.prefix, 'libexec', 'mypackage'), glob("libexec/*"))], 
    ... 
) 

, bunu hiç denemedim.

+0

Teşekkürler! data_files bunu benim için yaptı. Başka bir soru, varsayılan "öneki" alabilir miyim? Eğer kullanıcı bir tane belirtmezse, kendimi kullanmak istiyorum (python varsayılanı yerine). – Ago

+1

Seçenek varsayılanlarını setup.cfg dosyasında yapabilirsiniz. Bölümler ve ad-değer çiftleri ile .ini stil seçeneği dosyasında. Komut satırı seçenekleri doğrudan oradaki seçeneklere çevrilir ('-', vb. Kaldır). – Keith

+0

Bir çekicilik gibi çalışıyor, teşekkürler! – Ago

İlgili konular