gpt4 book ai didi

python - 在 cython 文件中导入任何模块会出现 undefined symbol 错误

转载 作者:行者123 更新时间:2023-12-04 11:42:13 24 4
gpt4 key购买 nike

当我在用 cython 编译的模块中使用任何 import 语句时,我在导入模块时收到以下错误(请参阅下面的完整代码):

ImportError: /.../hw.cpython-35m-x86_64-linux-gnu.so: undefined symbol: __intel_sse2_strchr

在我自己的机器上一切正常,但是当我尝试在外部高性能计算机上重新编译和运行我的脚本时出现此错误。

谷歌搜索我看到在几个地方弹出了类似的错误,但在这些讨论中,问题要么与自己的代码中的错误有关,而不是与导入的模块(例如 Undefined symbol error importing Cython module)有关,要么在构建 cython 或编译时出现问题(例如 Can cython be compiled with icc? )。我不知道如何将这些应用于我的案例。

通过阅读其他讨论,我怀疑问题出在我的 setup.py的表述上。 ,但我真的对此知之甚少 - 在我自己的系统上,标准示例很简单。我尝试将 numpy 添加到设置中(参见下面的 setup2.py),但这并没有解决问题 - 我在 import hw 上遇到了同样的错误.

完整示例

硬件.pyx:
import numpy  # without this line, the example works fine 

cpdef testfun():
print("Hello world!")

设置.py:
from distutils.core import setup
from Cython.Build import cythonize

setup(
ext_modules = cythonize('hw.pyx'),
)

设置2.py:
from distutils.core import setup
from Cython.Build import cythonize
import numpy as np

setup(
ext_modules = cythonize('hw.pyx'),
include_dirs = [np.get_include()] # -> including this doesn't make a difference
)

系统信息

外部系统运行python 3.5.2。我在 virtualenv 中运行我的代码,在那里我有 Cython 0.28.1。我尝试了 numpy 1.13.0 和 1.14.2。对于本例中的 videl 环境,我没有安装任何其他包(可能与我的问题无关,但 pip freeze 也列出了 UNKNOWN==0.0.0 )

[ 重要编辑 ]

我收到了 numpy 的错误(因为我之前一直在使用 cdef np.ndarray 我认为这是问题所在) - 但实际上是任何导致错误的导入语句 - numpy 恰好是导入的第一个模块。仍然不知道如何解决这个问题。

最佳答案

问题是我在没有运行英特尔 Python 发行版或以其他方式提供英特尔运行时库的情况下使用了英特尔编译器。

感谢@ead,我通过使用以下方法切换到 GCC 解决了这个问题:

CC=gcc python setup.py build_ext --inplace

关于python - 在 cython 文件中导入任何模块会出现 undefined symbol 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49524083/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com