zoukankan      html  css  js  c++  java
  • pyhton gevent库安装的蛋疼问题

    gevent库是python中的一个用于实现并发的库,python本身并发性能并不好,在gevent库的协助下,python并发性也能发挥的很好。于是安装gevent库成为python并发的一个必须需求。但是安装gevent库总是很多蛋疼,下面我说说那些蛋疼的事情:

    gevent库是依赖于python的另外两个库的,libevent和greenlet,得先分别安装这两个库,安装这两个库的时候最好都使用最新的版本,否则太旧版本可能出现不兼容的问题,然后于是本机上之前已经安装过libevent库,在安装gevent的时候就需要指定自己安装的libevent库了,通过如下命令:

     在编译libevent时,指定./configure --prefix=/usr
     python setup.py build --libevent ../libevent-2.0.21-stable
    ldd gevent-0.13.8-py2.7-linux-i686.egg-tmp/gevent/core.so用来查看加载的libevent库是否是自己安装的 
     
    除了这个还有更蛋疼的问题,就是如果机器的版本不是很高的话可能编译错误,next变量未定义,
    这个时候需要进行宏替换,把有next变量的宏展开,
     #define TAILQ_GET_NEXT(X) ((X)->next.tqe_next)
    然后编译会带有警告,如果继续安装,能够安装成功,但是执行import gevent的时候会报错,TAILQ_FIRST不存在,这个是因为系统定义的冲突了,
     #if _EVENT_NUMERIC_VERSION >= 0x02000500语句给屏蔽了,这个时候需要把#define TAILQ_FIRST(head) ((head)->tqh_first)放到
    #if _EVENT_NUMERIC_VERSION >= 0x02000500之前即可以
     
    另外有解释为什么需要这么做的原因:

    C 语言 implicit declaration of function 错误原因

    关于 implicit declaration of function 一点经验之谈

    用gcc编译c程序的时候 经常会出现
    implicit declaration of function '...' 的warning

    偶经过这几天的经验,发现主要有2种情况会产生这种warning

    1   没有把函数所在的c文件生成.o目标文件
    2   在函数所在的c文件中定义了,但是没有在与之相关联的.h文件中声明

      

  • 相关阅读:
    Java8初体验(二)Stream语法详解
    java8的新特性以及用法简介
    HDFS之SequenceFile和MapFile
    深入分析Parquet列式存储格式【转】
    Flume中的HDFS Sink配置参数说明【转】
    采用alluxio提升MR job和Spark job性能的注意点
    spark on alluxio和MR on alluxio测试(改进版)【转】
    python入门-分类和回归各种初级算法
    C++函数调用时的参数传递-3中传递方式
    OpenCV颜色空间——HLS颜色空间
  • 原文地址:https://www.cnblogs.com/hahawgp/p/3272194.html
Copyright © 2011-2022 走看看