2015-07-21 4 views
3

Мне нужно внести некоторые изменения в scikit-learn, включая изменения в код cython.Рабочий процесс для модификации больших проектов cython

Я раньше не работал над cython, поэтому мог бы сделать некоторые рекомендации - до сих пор у меня есть все зависимости, идущие в виртуальном виртуальном пространстве python, и клонированные и установленные gle.

Теперь, что является хорошим рабочим процессом для изменения .pyx-файлов? Должен ли я вносить изменения, а затем переустанавливать, чтобы увидеть эффекты? Или строить вместо этого?

Есть ли способ избежать перекомпиляции всего, что не изменилось?

Я слышал о import pyximport; pyximport.install(), но для меня это порождает ошибку компиляции с помощью sklearn -> есть ли способ гарантировать, что он использует те же параметры, что и Makefile, который успешно работает?

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

ответ

3

Вы можете просто запустить,

python setup.py develop 

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

python setup.py build_ext --inplace 

Если вы измените файл Cython в проекте, только эти файлы будут перекомпилированы следующий раз, когда вы запустите команду develop.

Модуль pyximport хорош для автономных функций Cython. Однако для более сложного проекта с несколькими файлами вышеуказанный подход, вероятно, будет проще.

+1

Звучит здорово - я скоро расследую вас и вернусь к вам. –

Смежные вопросы