【问题标题】:way to eliminate Cython numpy compilation warnings?消除 Cython numpy 编译警告的方法?
【发布时间】:2014-03-01 05:16:48
【问题描述】:

我遇到了此处描述的问题 (What is this import_umath function?),想知道是否有解决方法?我在使用以下代码编译使用 numpy 的 Cython 代码时遇到了完全相同的情况:

import numpy as np
cimport numpy as np
np.import_array()

生成许多关于 _import_umath 未被使用的警告:

/usr/local/lib/python2.7/dist-packages/numpy-1.6.2-py2.7-linux-x86_64.egg/numpy/core/include/numpy/__ufunc_api.h:226:1: warning: ‘_import_umath’ defined but not used [-Wunused-function]

删除np.import_array() 不会改变结果。就像上面帖子中建议的一张海报一样,我尝试将其添加到我的 .pxd/.pyx 文件中:

cdef extern from *:
    import_umath()

这也没什么区别。如何消除此警告?

【问题讨论】:

  • 您是否尝试在编译命令行中禁用该特定警告类?
  • @IgnacioVazquez-Abrams:如何使用 cython 将参数从 setup.py 传递给 C 编译器?
  • @user248237dfsf 你试过下面的方法了吗?

标签: python c numpy cython


【解决方案1】:

您可以使用setup.py 中的关键字extra_compile_args 将参数传递给C 编译器。例如,这不会产生警告:

from distutils.core import setup
from Cython.Build import cythonize
from distutils.extension import Extension
import numpy

extensions=[
    Extension("abc",
             ["abc.pyx"],
             include_dirs=[numpy.get_include()],
             extra_compile_args=["-w"]
            )
]

setup(
    ext_modules=cythonize(extensions),
)

【讨论】:

    【解决方案2】:

    Cython Tricks and Tips 他们解释说你需要:

    cdef extern from *:
        pass
    

    当您导入外部包时。 I already needed this trick to write a wrapper,也许它也适合你...

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-18
      • 1970-01-01
      • 1970-01-01
      • 2011-05-09
      • 1970-01-01
      相关资源
      最近更新 更多