Перекомпилируйте расширение Cython, когда setup.py изменен с редактируемым Pip - PullRequest
0 голосов
/ 26 июня 2018

Как мне сделать pip перекомпилировать расширения Cython, когда я только изменил setup.py при установке в режиме editable. В настоящее время он всегда пропускает расширения. Есть много вопросов, связанных с этим для distutils, но я не вижу ответов на pip.

Чтобы было ясно, у меня есть setup.py, как показано ниже

from distutils.core import setup, Extension
from Cython.Distutils import build_ext
import numpy

ext_modules = []

# simulate_fast
ext_modules += [
    Extension("adio.simulating.simulate_fast_c",
        sources=["./adio/simulating/simulate_fast/simulate_fast_c.pyx",
                 "./adio/simulating/simulate_fast/c/simulate_fast.c",
                 "./adio/simulating/simulate_fast/c/matrix.c"],
        include_dirs=[numpy.get_include()],
        extra_compile_args=["-Ofast", "-ffast-math", "-march=native"],
        language='c',
        libraries=["gsl", "openblas"],
        define_macros=[('FLOAT32', 1)]
        )
    ]

setup(
  name="adio",
  packages=["adio"],
  cmdclass={'build_ext': build_ext},
  ext_modules=ext_modules
)

Теперь, если я удалю ('FLOAT32', 1) в define_macros, конечно, я бы хотел, чтобы расширение Cython перекомпилировалось.

Однако, когда я бегу

python3 -m pip install --editable -U . -v

Я получаю следующий вывод как часть вывода

running develop
running egg_info
writing adio.egg-info/PKG-INFO
writing dependency_links to adio.egg-info/dependency_links.txt
writing top-level names to adio.egg-info/top_level.txt
reading manifest file 'adio.egg-info/SOURCES.txt'
writing manifest file 'adio.egg-info/SOURCES.txt'
running build_ext
skipping './adio/simulating/simulate_fast/simulate_fast_c.c' Cython extension (up-to-date)

Я пробовал флаг -I и --force-reinstall с pip, но он всегда пропускает расширение Cython. Если я не использую режим редактирования, я могу запустить

python3 -m pip install -U . -v

и это перекомпилируется. Как можно добиться того же при использовании флага --editable.

Относящиеся

distutils игнорирует изменения в файле setup.py при создании расширения?

...