偶然发现了旧模块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
。)