2012-01-17 29 views
9

İki ayrı python paketi oluşturmak istediğim bir projem var. Bu paketleri pip kullanarak kurmak istiyorum.Birden çok proje, birden çok setup.py komut dosyası kullanıyor mu?

: Ben script_name parametre set setup_foo.py yılında

/myproject 
    setup_foo.py 
    setup_bar.py 
    /mypackage1 
    /mypackage2 
    ... 

: Ben böyle bir yapı denedik Multiple projects from one setup.py?

:

bu önceki soruya cevaplar ise

, genel tavsiye iki setup.py komut yazmak oldu

from distutils.core import setup 
setup(name = 'foo', 
     version = '2.0.0', 
     ..., 
     script_name = 'setup_foo.py') 

(Ayrıca aşağıdaki parametrelerden de denedim - E dokümantasyon varsayılan olarak ben

python setup_foo.py sdist 

kullanılarak foo-2.0.0.tar.gz oluşturmak [0])

sys.argv için Ama pip install foo-2.0.0.tar.gz, böyle bir hata olsun:

Unpacking .../foo-2.0.0.tar.gz 
Running setup.py egg_info for package from file:///...foo-2.0.0.tar.gz 
Traceback (most recent call last): 
    File "<string>", line 14, in <module> 
IOError: [Errno 2] No such file or directory: '/var/folders/wj/jv7n2pmn5d1g1jjx6khc8bx80000gn/T/pip-v3dujq-build/setup.py' 
Complete output from command python setup.py egg_info: 
Traceback (most recent call last): 
File "<string>", line 14, in <module> 
IOError: [Errno 2] No such file or directory: 
'/var/folders/wj/jv7n2pmn5d1g1jjx6khc8bx80000gn/T/pip-v3dujq-build/setup.py' 

bazı eksik muyum setup_foo.py kullanmak için pip talimatı verme yolu? Veya ayrı dizinde 'setup.py' olarak adlandırılan iki komut dosyası yerleştirmeli miyim?

cevap

6

Bu nedenle, bu projeleri bir dizine yerleştirdiniz. Benim tavsiyem onları düzgün bir şekilde ayırmak ve sonra bunları "setup.py developman -U" üzerinden paylaşılan bir sanalenveye eklemek olacaktır. Orada, bitti, güzel çalışıyor.

Aksi takdirde, bir sonraki sorun "setup.cfg", "MANIFEST.in" vb. Paylaşıyor olacak. Genelde, kurulum/dağıtım varsayımlarını her ihlal ettiğinizde çok fazla gereksiz acıya sahip olacaksınız.

Açık daha iyidir:

Ben varsayalım bunu her iki paket de açıkça "-U geliştirmek" yapar ve "bu ithal" alıntı, automagicallylar piton yolunda yukarıda yapıyı seçti örtük.

+0

Cevabınız için teşekkürler! Resimlediğim yapıyı seçmemdeki sebeplerim hakkında neredeyse haklısınız; İki tane vardı. İlk olarak, PyDev/Eclipse kullanıyorum ve mümkünse proje arası bağımlılıkları önlemek istedim. İkincisi, benim iki dağıtımım projedeki hemen hemen tüm paketleri paylaşıyor - temel olarak komut satırı araçlarının dahil edildiği farklılıklar - yani onları iki veya üç ayrı projeye ayırmak biraz aşırı görünüyordu. Bir projedeki iki dağıtım yanlış bir şekilde kurulursa, yalnızca bir dağıtıma sahip olmayı seçebilir ve tüm komut dosyalarını tüm sunucularda dağıtmayı kabul edebilirim. –

+1

Bazı ilham almak için http://code.google.com/p/pyroscope/source/browse/trunk/update-to-head.sh adresine bakın. Bir virtualenv'e (her zaman iyi bir fikir, hatta bir üretim makinesinde) yüklerseniz, araç taslaklarını seçici olarak simgeleyebilir ve böylece seçilen bir alt kümeyi yayınlayabilirsiniz (bkz. "Ln -nfs $ (grep -l" entry_point. * Pyrocore) == '$ PWD/bin/*) $ {BIN_DIR: - ~/bin}/"komutu). – pyroscope

+0

Zeki! Evet, bu, slapların alt kümelerini saklamanın/yayımlamanın daha basit bir yoludur. –

0

Kurulum araçları, dağıtıcıların aksine, setup.py adlı kurulum komut dosyalarını desteklemiyor gibi görünüyor. Bu hatayı setuptools'a (bugs.python.org/setuptools) bildirmek ve (bitbucket) geliştiricileri dağıtmak en iyisidir.

+1

Bir hatadan ziyade bir özellik olabilir ... soru, "script_name" inin olması gereken bir efekttir. Belgeler bu konuda özellikle açık değildir. –

+0

Dağıtım dokümanları yalnızca şunu içerir: http://docs.python.org/distutils/apiref#distutils.core.run_setup –

İlgili konular