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就可以了

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM