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

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

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

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

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

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

5
задан SpoonMeiser 9 February 2010 в 16:54
поделиться

1 ответ

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...
5
ответ дан 14 December 2019 в 19:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: