Python'un dikkat dağıtıcılarını veya setuptools'un setup() işlevini biraz alışılmadık bir şekilde aramak istiyorum, ancak dağıtımın bu tür bir kullanım için uygun olup olmadığından emin değilim.Komut satırı/seçenekleri ile komut satırını ayrıştırmadan doğrudan 'ya da setuptools' setup() işlevini çağırın.
from distutils.core import setup
setup(name='Distutils',
version='1.0',
description='Python Distribution Utilities',
author='Greg Ward',
author_email='[email protected]',
url='http://www.python.org/sigs/distutils-sig/',
packages=['distutils', 'distutils.command'],
)
Normalde: - (Setuptools kullanımı neredeyse aynı distutils dokümanlardan kelimesi kelimesine kaldırdı) Örnek olarak
, en Şu anda şöyle bir 'setup.py' dosyası, var diyelim Bu modülün bir RPM'si için sadece .spec dosyası oluşturmak için, komut satırını ayrıştıran ve RPM'ye özgü şeyleri işlemek için 'bdist_rpm' kodunu çağıran python setup.py bdist_rpm --spec-only
'u çalıştırabilirim. .spec dosyası './dist' içinde biter.
Kurulum() çağrısı, 'bdist_rpm' komutunu '- sadece' seçeneğiyle, ayrıştırma komut satırı parametreleri olmadan çalıştıracak şekilde nasıl değiştirebilirim? Komut adını ve seçenekleri setup() olarak parametreler olarak iletebilir miyim? Veya el ile bir komut satırı oluşturabilir ve bunun yerine bir parametre olarak iletebilir miyim?
NOT: Komut dosyasını, os.system() veya alt işlem modülü veya benzeri bir şey kullanarak, gerçek bir komut satırıyla ayrı bir işlemde arayabileceğimi zaten biliyorum. Herhangi bir harici komut çağırma yöntemini kullanmaktan kaçınmaya çalışıyorum. Mevcut yorumlayıcıda setup() işlevini çalıştıran bir çözüm için özellikle arıyorum.
Arka plan için, bazı yayın yönetimi kabuk betiklerini tek bir Python programına dönüştürüyorum. Görevlerden biri, daha fazla yayın öncesi test için bir .spec dosyası oluşturmak üzere 'setup.py' çalıştırıyor. 'Setup.py' komutunu kendi komut satırı seçenekleriyle bir dış komut olarak çalıştırmak, garip bir yöntem gibi görünüyor ve programın geri kalanını zorlaştırıyor. Daha Pythonic bir yol olabileceğini hissediyorum.
Soruyu beğeniyorum. Benim için 'setup()' zayıf bir şekilde tasarlanmış gibi görünüyor - en azından bazı sihir yapmak yerine argüman olarak 'sys.argv 'almalı. Parametre, sys.argv '(argparse'de olduğu gibi) için de varsayılan olabilir, ancak işlev imzasında hem belgelenmiş hem de görünür olmalıdır. – abukaj