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文件中声明

      

  • 相关阅读:
    Hive 使用问题集锦
    scala def/val/lazy val区别以及call-by-name和call-by-value
    spark学习流程
    Hadoop
    Hive
    Chrome快捷键
    Java API帮助文档
    Java 访问修饰符与非访问修饰符
    java 关键字
    Solr配置Ikanalyzer分词器
  • 原文地址:https://www.cnblogs.com/hahawgp/p/3272194.html
Copyright © 2011-2022 走看看