You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

升级Python到3.12后安装python-binance及TA-lib库时遇aiohttp编译报错求助

升级Python到3.12后安装python-binance及TA-lib库时遇aiohttp编译报错求助

兄弟,我太懂你刚升级Python3.12就踩编译坑的郁闷了!尤其是咱新手阶段,看着一堆报错代码根本摸不着头脑,网上的解答又模棱两可。别慌,我给你拆成两步,一步步把问题解决,每一步都讲得明明白白:

一、先解决python-binance的安装问题

python-binance依赖的aiohttp库在Python3.12刚推出时,很多旧版本不兼容3.12的C API变化,这是核心问题。按下面的步骤来:

  1. 先把pip更到最新版
    新版pip对新Python版本的兼容性支持更好,先执行这条命令:

    python -m pip install --upgrade pip
    
  2. 安装适配3.12的aiohttp版本
    现在aiohttp 3.9.0及以上版本已经支持Python3.12了,你可以先单独装它,再装python-binance:

    pip install aiohttp>=3.9.0
    pip install python-binance
    

    或者直接一条命令搞定:

    pip install python-binance aiohttp>=3.9.0
    
  3. 如果还是报错,检查系统编译依赖
    编译C扩展包需要系统有对应的编译工具,不同系统的安装方法:

    • Windows:得装Visual Studio 2022的「C++开发工具」组件,安装时一定要勾选「MSVC v143生成工具」和「Windows SDK」,装完重启终端再试。
    • Ubuntu/Debian:打开终端执行:
      sudo apt-get install build-essential libssl-dev libffi-dev python3-dev
      
    • macOS:先装Xcode命令行工具:
      xcode-select --install
      
      如果用Homebrew的话,再装openssl:
      brew install openssl
      

二、解决TA-lib的安装问题

TA-lib是基于C语言的技术分析库,Python的TA-lib绑定需要先装系统级的TA-lib库,再装Python版的:

  1. 先装系统级的TA-lib

    • Windows:下载对应你系统的预编译二进制包(选64位版本,适配Python3.12),安装时记住安装路径(比如C:\ta-lib),然后用下面的命令装Python版,把路径换成你自己的:
      pip install TA-lib --global-option=build_ext --global-option="-IC:\ta-lib\include" --global-option="-LC:\ta-lib\lib"
      
    • Ubuntu/Debian:直接用包管理器装:
      sudo apt-get install ta-lib-dev
      pip install TA-lib
      
    • macOS:用Homebrew装系统级库:
      brew install ta-lib
      pip install TA-lib
      
  2. 如果系统级装完还是报错
    可能是Python版TA-lib的旧版本不支持3.12,直接装最新的源码版本:

    pip install git+https://github.com/mrjbq7/ta-lib.git
    

给新手的备选方案

如果你不想折腾编译问题,也可以用虚拟环境降级到Python3.11——毕竟3.11的生态更成熟,大部分库都完美支持:

  1. 用conda创建虚拟环境(如果没装conda,先去官网装一个):
    conda create -n binance_trade python=3.11
    
  2. 激活环境:
    conda activate binance_trade
    
  3. 现在安装python-binance和TA-lib就不会有兼容性问题了:
    pip install python-binance TA-lib
    

备注:内容来源于stack exchange,提问作者Yami

火山引擎 最新活动