Учитывая setup.py
следующим образом:
from distutils.core import setup
setup(
name = 'TestApp',
version = '0.0.1',
author = 'saaj',
py_modules = ['app'],
test_suite = 'test'
)
Для некоторых сценариев и автоматизации без установки пакета, где pip
, easy_install
и даже setuptools
не предоставляют параметры командной строки или публичный API-интерфейсы для чтения всех метаданных (например, test_suite
), вот немного Hacky способ:
python3 -c "import sys, types; m = types.ModuleType('distutils.core'); \
m.setup = lambda **kwargs: print(kwargs); \
sys.modules['distutils.core'] = m; import setup"
Это напечатает dict
из именованных аргументов, переданных setup()
.
{'author': 'saaj', 'version': '0.0.1', 'name': 'TestApp',
'test_suite': 'test', 'py_modules': ['app']}
Вы можете заменить print
в lambda
на то, что выход вам нужно. Если ваш setup.py
импортирует setup()
от setuptools
, что на самом деле рекомендуется, просто замените «distutils.. Ядро»с "Setuptools" в сниппет
отформатированный фрагмент следующим образом:
import sys
import types
m = types.ModuleType('distutils.core')
m.setup = lambda **kwargs: print(kwargs)
sys.modules['distutils.core'] = m
import setup # import you setup.py with mocked setup()
К сожалению, у меня нет' pip' установлен прямо сейчас, поэтому он не может проверить его 'The pkg_resources.get_distribution'. подход не работает ни для расширения, которое было установлено с помощью простой 'python setup.py build'. В этом случае я получаю исключение' DistributionNotFound: foo'. – dastrobu
python setup.py build не устанавливается. –
Использование «pip» добавляет огромную задержку во время импорта и добавляет существенный объем памяти к вашему собственному коду. Он внутренне просто использует 'pkg_resources' и сдает вам одинаковый результат, в основном« pip »здесь посторонний и вводящее в заблуждение "решение ». Ответ также фактически не получает желаемой информации; из объекта «Распространение» крайне неочевидно, как получить версию, автора и описание среди других полей. 'pkg._get_metadata (pkg.PKG_INFO)' выдает вам отдельные строки из файла метаданных в качестве списка для стартеров. – amcgregor