2016-06-03 1 views
1

Я пытаюсь собрать некоторые файлы Cython коды, используя distutils.core.setup Для того, чтобы предотвратить компиляцию от сбоев, но продолжать как можно больше я ставлю каждый файл расширение в Ьге заявлении в качестве такогопитон Distutils попробовать настроить

from distutils.core import setup, Extension 
from Cython.Build import cythonize 
from Cython.Distutils import build_ext 
import numpy as np 

pyx = [#file 1 
     Extension('file1', 
     include_dirs=[np.get_include()], 
     sources ["file1.pyx"]), 

     #file 2 
     Extension('file2', 
     include_dirs=[np.get_include()], 
     language="c", 
     sources = ["file2.pyx"]), 

     #rest of files 
     ] 

     # compile extensions 
     for E in pyx : 
      try: 
       setup(ext_modules = [E], cmdclass={'build_ext': build_ext}) 
      except Exception as e: 
       print "THIS IS AN ERROR", e 

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

Любая идея, почему и что делать?

+0

ли вы проверить, если 'distutils.core.setup' на самом деле распространяется исключение, если один из модулей расширения не строить? – renemilk

+0

Да, да. Я ввел ошибку, чтобы проверить попытку и исключить, кроме как установить сбой, как правило, без прохождения за исключением. – Cobry

+0

Тогда я предлагаю запустить pdb и установить точку останова на любом 'raise' и отследить там исключение. – renemilk

ответ

0

SystemExit должны быть включены в за исключением

# compile extensions 
for E in pyx : 
    try: 
     setup(ext_modules = [E], cmdclass={'build_ext': build_ext}) 
    except (Exception, SystemExit) as e: 
     print "THIS IS AN ERROR", e