我目前遇到一个问题,我可以在解释器环境中使用和导入numpy
,但我无法从嵌入在C/C++
中的python中导入或使用numpy
。因此,我想了解numpy
扩展库的工作原理,特别是
numpy/core/multiarray.cpython-35m-x86_64-linux-gnu.so
这与标准的Python包符号(特别是PyExc_UserWarning
符号)相关联。我的当前错误输出显示PyExc_UserWarning未定义
。我使用nm
命令确认它在libpythonX.Y.m.so
中存在。
ldd multiarray.cpython-35m-x86_64-linux-gnu.so
并得到以下输出结果:
我觉得这个库似乎未链接到应该包含该符号的任何动态库。 numpy
的 multiarray.cpython-35m-x86_64-linux-gnu.so
通常是如何找到该符号或其变体的?
感谢您抽出时间阅读此问题。欢迎提出任何想法、建议或答案!
原始问题位于此处,这是原始问题的子问题。我之所以问这个问题,是因为我怀疑这个共享库可能链接到了错误的位置,并且只有通过 python 的 C/C++
接口调用 python 时才会使用该特定共享库。
系统规格 + 问题信息
- Ubuntu 16.04,64 位
- 使用 enabled-shared 编译 Python 3.5.5
- 使用命令
pip3.5 install numpy
安装了 numpy-1.14.2(使用 pip 9.0.0)
编辑于 4/16/18:
修改了一些不清晰的术语。
编辑于 4/17/18:
我找到了一个原始问题的答案。但是,这个问题和原来的问题仍然没有解决,因为对这个问题的回答可能会导致更好的答案 原始问题。