Как я могу программно обнаружить ошибки при создании яйца с помощью инструментов настройки?

StackOverflow https://stackoverflow.com/questions/2230843

Вопрос

Если у меня есть сценарий, который создает яйца, в основном путем запуска

python setup.py bdist_egg --exclude-source-files

для ряда файлов setup.py, которые используют setuptools Чтобы определить, как строятся яйца, есть ли простой способ определить, были ли какие-либо ошибки при построении яйца?

Недавно у меня возникла ситуация: в модуле произошла синтаксическая ошибка.Setuptools выдал сообщение о стандартной ошибке, но продолжил создание яйца, не обращая внимания на сломанный модуль.Поскольку это была часть партии, создавшей несколько яиц, ошибка была пропущена, и результат оказался бесполезным.

Есть ли способ обнаружить ошибки при программном построении яйца, кроме простого захвата стандартной ошибки и ее анализа?

Это было полезно?

Решение

distutils использовать py_compile.compile() функция для компиляции исходных файлов.Эта функция занимает doraise аргумент, что при установке на True вызывает исключение при ошибках компиляции (по умолчанию ошибки выводятся в поток stderr). distutils не звони py_compile.compile() с doraise=True, поэтому компиляция не прерывается из-за ошибок компиляции.

Остановиться на ошибках и иметь возможность проверить setup.py код возврата (в случае ошибок он будет ненулевым), вы можете исправить py_compile.compile() функция.Например, в вашем setup.py:

from setuptools import setup
import py_compile

# Replace py_compile.compile with a function that calls it with doraise=True
orig_py_compile = py_compile.compile

def doraise_py_compile(file, cfile=None, dfile=None, doraise=False):
    orig_py_compile(file, cfile=cfile, dfile=dfile, doraise=True)

py_compile.compile = doraise_py_compile

# Usual setup...
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top