vnpy / vnpy_ctp

VeighNa框架的CTP交易接口
https://www.vnpy.com
MIT License
118 stars 106 forks source link

MacOS Mojave 报错:Symbol not found: _iconv, Expected in: flat namespace #57

Closed bitswall closed 1 month ago

bitswall commented 1 month ago

我的MacOS是Mojave,系统比较老。主要是觉得它比较轻便,日常使用足够了。 我是使用pip install vnpy_ctp

在运行的时候,系统报如下错误:

from .vnctpmd import MdApi ImportError: dlopen(/data/software/dev/miniconda3/envs/trade/lib/python3.8/site-packages/vnpy_ctp/api/vnctpmd.cpython-38-darwin.so, 2): Symbol not found: _iconv Referenced from: /data/software/dev/miniconda3/envs/trade/lib/python3.8/site-packages/vnpy_ctp/api/vnctpmd.cpython-38-darwin.so Expected in: flat namespace in /data/software/dev/miniconda3/envs/trade/lib/python3.8/site-packages/vnpy_ctp/api/vnctpmd.cpython-38-darwin.so

网上查了一下,是否需要从源码重新编译? 而不能使用pip install直接安装二进制文件?

谢谢!

vnpy commented 1 month ago

请参考该页面底部的Mac安装说明:https://github.com/vnpy/vnpy_ctp

bitswall commented 1 month ago

这个试过了,还是报同样的错误....,请在确认前不要把issue关闭。 我安装了python3.12.4的版本,因为最新的vnpy_ctp要求python版本 >= 3.10

vnpy commented 1 month ago

好的,请确保安装使用官方Python,不要用Anaconda/Miniconda(这两个的动态库是自行编译的,和官方版本不兼容)

bitswall commented 1 month ago

我是用miniconda安装的虚拟环境: conda create -n ctp python==3.12.4 然后在虚拟环境中运行pip install -e .

在此之前,我在python 3.8.10的虚拟环境中,使用pip install vnpy_ctp安装的6.6.9.1,编译的时候报错。

我使用pip install vnpy_ctp从6.6.9.1一直实验降级到6.5.1.7,才编译通过。

但运行的时候,总是提示 from .vnctpmd import MdApi ModuleNotFoundError: No module named 'vnpy_ctp.api.vnctpmd'

vnpy commented 1 month ago

Conda创建的虚拟环境,下载的二进制文件都是Conda生态编译的,和Python官方的有区别。

另外VeighNa已经不支持Python 3.10以下的版本,请升级到Python 3.10再尝试。

bitswall commented 1 month ago

我python已经是3.12.4了。虽然我是从conda安装的,但老实说,加载过很多module,没有遇到过问题。

bitswall commented 1 month ago

我关闭这个case吧。我试了很久,都不行。重新安装的Xcode和Xcode CLI 11.3.1。然后编译6.5.1.7,没有报错。一调用就报错