Compilation 当setup.py更改为Pip editable时,重新编译Cython扩展

Compilation 当setup.py更改为Pip editable时,重新编译Cython扩展,compilation,cython,Compilation,Cython,在可编辑模式下安装时,如果只更改了setup.py,如何使pip重新编译Cython扩展。目前它总是跳过扩展。对于distutils有许多与此相关的问题,但对于pip,我看不到任何答案 为了清楚起见,我有一个类似下面的setup.py from distutils.core import setup, Extension from Cython.Distutils import build_ext import numpy ext_modules = [] # simulate_fast e

可编辑
模式下安装时,如果只更改了
setup.py
,如何使
pip
重新编译Cython扩展。目前它总是跳过扩展。对于
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)
,当然我希望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)
我用
pip
尝试了
-I
-force-reinstall
标志,但它总是跳过Cython扩展。如果我没有使用可编辑模式,那么我可以运行

python3 -m pip install -U . -v
这会重新编译。当使用
--editable
标志时,如何实现同样的效果

相关的


我想你做不到。我通常会删除从
.pyx
文件生成的
.c
文件,以便在这些情况下强制重新编译。因此,您将使用类似于
查找的内容-名称*.pyx | sed-e“s/.pyx/.c/g”| xargs rm
?我想知道这是否会“危险”。