繁体   English   中英

修改后未通过 setup.py 重新安装 Cython 扩展

[英]Cython extension not re-installing via setup.py after modification

所以,我有一个 Python package,带有 Cython 扩展。

文件结构:

-lib_name (dir)
    -setup.py
    -lib_name (dir)
        -__init__.py
        -python_thing.py
        -cython_thing.pyx

这是我的setup.py

from setuptools import setup
from setuptools.extension import Extension
from Cython.Build import cythonize

extension = Extension(
    name="cython_thing",
    sources=["lib_name/cython_thing.pyx"],
    extra_compile_args=["-ffast-math"]
)

setup(
    ext_modules=cythonize(extension, language_level=3),
    name='lib_name',
    version='0.0.1',
    packages=['lib_name'],
    install_requires=['numpy', 'sklearn']
)

这是我的__init__.py

from . import *

__all__ = ['python_thing', 'cython_thing']

我跑了sudo python3 setup.py install一次,go 似乎一切顺利。 我看到pyx文件被cythonized和编译,安装了package,然后我似乎可以毫无问题地使用整个package。

但是,我现在对.pyx文件进行了修改以进行一些故障排除。 当我使用installdevelop重新安装 package 并尝试使用它时,它继续使用旧版本的代码。 为了确认这一点,我已经将print('THIS IS THE NEW CODE')添加到.pyx文件中的函数,以确保它能够识别自己。 但是,这些行从不打印,告诉我我肯定还在以某种方式运行旧代码。 确实看到 Cython 重新对新代码进行了 cythonizing,但它一定不能安装它,因为它永远不会运行。

我已经尝试过sudo pip3 uninstall lib_name ,然后重新安装,但没有骰子。 仍然得到旧的代码路径。

如果有帮助,我将使用from lib_name.cython_thing import cython_function .pyx文件中导入内容。

我相当确定这一定是我的 package 结构的问题,或者可能是一些内置的 object 被缓存在某处。 谁能发现我做错了什么? 如何确保在需要时完全重新安装我的 package?

开发时,我通常有一个虚拟环境,我在其中安装我的 cython package 开发人员模式通过(在setup.py文件夹中):

 pip install -e .

重新运行pip install -e. 将更新为当前的 state。

使用pip install (或setup.py install )时,需要先卸载 package,然后才能重新安装。


以上是快速和方便的,但也必须不时在干净的虚拟环境中检查安装。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM