解决linux下bintrees安装问题

错误信息:ModuleNotFoundError: No module named ‘bintrees.cython_trees’

环境:

系统:centos6
python版本:3.6
canda虚拟环境

错误描述:

  在mac上调试的时候,pip install bintrees下载后,引用cython_trees是没有问题的。即:

from  bintrees import cython_trees

不出错即可
  上传到linux系统上之后,继续使用pip 下载bintrees,但是运行代码就出错,错误信息为:

ModuleNotFoundError: No module named 'bintrees.cython_trees'

解决办法

解决办法为:源码安装,流程如下

  1. 激活虚拟环境:如果有虚拟环境则激活,否则不用激活
  2. 下载cython模块:pip install Cython
  3. git clone https://github.com/mozman/bintrees
  4. 进入到源码文件夹:cd bintrees
  5. 安装模块: python setup.py install

原因剖析

主要介绍我的思维过程:

  1. 由于在不同系统上使用相同的命令安装的模块,因此不是命令导致的,查看模块安装路径:
    a) 在mac上目录结构如下:
    在这里插入图片描述
    在linux下结构如下(可以使用pip show bintrees查看安装路径):
    在这里插入图片描述
    对比可以发现缺少一个so文件

  2. 查看so文件是什么:大体上是为了加密所用

  3. 查看so文件制作过程:主要引用cython模块

  4. 查看源码的setup.py文件,可以看到如下代码:

from setuptools import Extension

try:
    from Cython.Distutils import build_ext
    ext_modules = [Extension("bintrees.cython_trees", ["bintrees/ctrees.c", "bintrees/cython_trees.pyx"]),
                   ]
    commands = {'build_ext': build_ext}
except ImportError:
    ext_modules = []
    commands = {}
  1. 猜测是pip下载的时候,没有安装完全,具体原因未知

  2. 尝试使用源码安装,可以成功,linux系统下,bintrees包的目录如下
    在这里插入图片描述

  3. 激活python,使用

from  bintrees import cython_trees

命令不报错

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值