找不到符号:_ccdFirstDirDefault从OSX 10.13.6 High Sierra上的python2.7的pyode导入ode

时间:2019-07-13 14:46:38

标签: python cython ode

偶然发现了旧模块pyode; pip install pyode没有错误, 但是以下代码失败:

import ode as p .  
world = p.world()

import最初找不到模块(原子的f5),但是f6会找到它。发现如果在从终端运行python之前将目录更改为/ usr,则会找到模块,但显示“找不到符号”错误。

ImportError: dlopen(/usr/local/lib/python2.7/site-packages/ode.so, 2): Symbol not found: _ccdFirstDirDefault
  Referenced from: /usr/local/lib/python2.7/site-packages/ode.so
  Expected in: flat namespace
 in /usr/local/lib/python2.7/site-packages/ode.so

symbol dump :- nm  /usr/local/lib/python2.7/site-packages/ode.so | grep -a _ccdFirstDirDefault

displays: U _ccdFirstDirDefault, which indicates that the symbol is Undefined;

看起来像一个cython编译问题,但不熟悉与Python的C婚姻概念。

看到了几篇SO相关文章,其中涉及与python相关的未知符号, 尝试过xcode-select --install(不需要,xcode 10.1,已经建立的安装工具) && sudo xcode-select -switch /Library/Developer/CommandLineTools/

没有变化。

关于此旧模块的在线内容不多,但是当我切换到python 3.7.3并安装了py3ode pip时,这会安装依赖项cython,我没有收到任何错误,但导入仍然显示未找到符号:_ccdFirstDirDefault导入模块时从dlopen中获取。

首先卸载pyode / py3ode,然后安装各种版本的py3ode / pyode python2 / python3 pip并手动执行相同操作,直到导入为止都没有错误(相同_ccdFirstDirDefault。)

0 个答案:

没有答案