当 setup.py 更改为 Pip 可编辑时重新编译 Cython 扩展

rwo*_*lst 5 compilation cython

pip当我仅setup.py在模式安装时进行更改时,如何重新编译 Cython 扩展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
)
Run Code Online (Sandbox Code Playgroud)

现在,如果我删除('FLOAT32', 1)indefine_macros当然,我希望 Cython 扩展重新编译。

然而当我跑步时

python3 -m pip install --editable -U . -v
Run Code Online (Sandbox Code Playgroud)

我收到以下输出作为输出的一部分

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)
Run Code Online (Sandbox Code Playgroud)

我已经尝试过-I--force-reinstall标记,pip但它总是跳过 Cython 扩展。如果我不使用可编辑模式,那么我可以运行

python3 -m pip install -U . -v
Run Code Online (Sandbox Code Playgroud)

这确实会重新编译。使用标志时如何实现同样的效果--editable

有关的

distutils 在构建扩展时忽略对 setup.py 的更改?