zoukankan      html  css  js  c++  java
  • uwsgi手动安装时报错ValueError: invalid literal for int() with base 10: '32_1'

    安装uwsgi,安装步骤如下

    wget https://projects.unbit.it/downloads/uwsgi-latest.tar.gz
    tar zxvf uwsgi-latest.tar.gz
    cd <dir>
    python uwsgiconfig.py --build

    报错

    using profile: buildconf/default.ini
    detected include path: ['/usr/local/include', '/usr/lib/gcc/x86_64-redhat-linux/4.1.2/include', '/usr/include']
    Traceback (most recent call last):
      File "uwsgiconfig.py", line 1612, in <module>
        build_uwsgi(uc, is_cflags, gcll=gcll)
      File "uwsgiconfig.py", line 280, in build_uwsgi
        gcc_list, cflags, ldflags, libs = uc.get_gcll()
      File "uwsgiconfig.py", line 983, in get_gcll
        elif int(k_minor) >= 25:
    ValueError: invalid literal for int() with base 10: '32_1'

    这个报错是因为python中int转换字符串的时候,默认转换的只能是数字,'32_1'显然不是一个数字,谁能想到从官网上下载的脚本居然有bug

    肿木办呢?打开这个文件的源码,找到983行,代码为

            if timer_mode == 'auto':
                if uwsgi_os == 'Linux':
                    k_all = uwsgi_os_k.split('.')
                    k_base = k_all[0]
                    k_major = k_all[1]
                    if len(k_all) > 2:
                        k_minor = k_all[2]
                    else:
                        k_minor = 0
                    if int(k_base) > 2:
                        timer_mode = 'timerfd'
                    elif int(k_minor) >= 25:
                        timer_mode = 'timerfd'
                    else:
                        timer_mode = 'none'

    取的应该是版本号

    # uname -a
    Linux jiu_bu_gao_su_ni 2.6.32_1-12-0-0 #1 SMP Mon Aug 12 17:59:52 CST 2013 x86_64 x86_64 x86_64 GNU/Linux

    这样在代码里强制加一个k_minor=32就可以了

            if timer_mode == 'auto':
                if uwsgi_os == 'Linux':
                    k_all = uwsgi_os_k.split('.')
                    k_base = k_all[0]
                    k_major = k_all[1]
                    if len(k_all) > 2:
                        k_minor = k_all[2]
                    else:
                        k_minor = 0
                    k_minor = 32
                    if int(k_base) > 2:
                        timer_mode = 'timerfd'
                    elif int(k_minor) >= 25:
                        timer_mode = 'timerfd'
                    else:
                        timer_mode = 'none'

    测试一下,安装成功

    python uwsgiconfig.py --build

    把同路径下生成的uwsgi拷贝到/usr/bin下或者/usr/sbin就可以了

  • 相关阅读:
    【博客大赛】使用LM2677制作的3V至24V数控可调恒压源
    电压跟随器
    运算放大器虚短和虚断
    JTAG TAP Controller
    JTAG Pinouts
    USB Mass Storage Class – Bulk Only Transport
    Send custom commands to Mass Storage device
    USB Mass Storage communication with PassThrough / more than 64K data length
    STLink download/debug interface for Linux.
    SCSI Pass-Through Interface Tool
  • 原文地址:https://www.cnblogs.com/wuxie1989/p/6647649.html
Copyright © 2011-2022 走看看