Python 嵌入,导入错误:无法导入名称_remove_dead_weakref

Python embedding, ImportError: cannot import name _remove_dead_weakref

本文关键字:导入 weakref remove dead 嵌入 错误 Python      更新时间:2023-10-16

我正在尝试使用嵌入式Python运行一些C++代码。几周前,代码运行良好。代码仍在编译,但我现在收到错误

Traceback (most recent call last):
  File "./main.py", line 1, in <module>
    import numpy as np
  File "/usr/local/lib/python2.7/site-packages/numpy/__init__.py", line 142, in <module>
    from . import add_newdocs
  File "/usr/local/lib/python2.7/site-packages/numpy/add_newdocs.py", line 13, in <module>
    from numpy.lib import add_newdoc
  File "/usr/local/lib/python2.7/site-packages/numpy/lib/__init__.py", line 8, in <module>
    from .type_check import *
  File "/usr/local/lib/python2.7/site-packages/numpy/lib/type_check.py", line 11, in <module>
    import numpy.core.numeric as _nx
  File "/usr/local/lib/python2.7/site-packages/numpy/core/__init__.py", line 74, in <module>
    from numpy.testing.nosetester import _numpy_tester
  File "/usr/local/lib/python2.7/site-packages/numpy/testing/__init__.py", line 10, in <module>
    from unittest import TestCase
  File "/usr/local/opt/python/Frameworks/Python.framework/Versions/2.7/lib/python2.7/unittest/__init__.py", line 64, in <module>
    from .main import TestProgram, main
  File "/usr/local/opt/python/Frameworks/Python.framework/Versions/2.7/lib/python2.7/unittest/main.py", line 7, in <module>
    from . import loader, runner
  File "/usr/local/opt/python/Frameworks/Python.framework/Versions/2.7/lib/python2.7/unittest/runner.py", line 7, in <module>
    from .signals import registerResult
  File "/usr/local/opt/python/Frameworks/Python.framework/Versions/2.7/lib/python2.7/unittest/signals.py", line 2, in <module>
    import weakref
  File "/usr/local/opt/python/Frameworks/Python.framework/Versions/2.7/lib/python2.7/weakref.py", line 14, in <module>
    from _weakref import (
ImportError: cannot import name _remove_dead_weakref

从那时起,我所做的唯一更改是安装macOS补充更新并将Python从2.7.13_1升级到2.7.14_2(使用Homebrew(。我已经更改了makefile中的相关链接器标志,即键入python-config --ldflags时出现的那些。我还通过按照Homebrew的指示将export PATH="/usr/local/opt/python/libexec/bin:$PATH"插入我的.bash_profile,确保我正在使用的Python绝对是Homebrew。

我不确定此错误是由于Python更新,最近的macOS补充更新还是其他原因。知道问题可能是什么吗?

谢谢

我遇到了同样的问题;在python 2.7中,可以使用NumPy 1.8.0,然后我使用brew(再次(安装了NumPy,它在我的python(2.7(中不再可用。(遇到与此处相同的错误(

所以我做了"brew unlink python && brew link python"来使用python 3(而不是2(,其中提供了NumPy 1.14。我猜python 2.7与最新版本的NumPy不兼容。