zoukankan      html  css  js  c++  java
  • Python3源码方式编译

    一般使用源代码编译完Python3后,会出现多个常用包没有编译出来,并且交互式Python3不能用退格。
    下文介绍如何解决。
    常见问题:
    1.Python3交互式时不能使用退格和方向键。原因:编译Python3时,依赖readline-devel库
    2.解决无法引入curses库。原因:编译Python3时,依赖ncurses-devel库
    3.解决无法引入sqlite3库。原因:编译Python3时,依赖sqlite3-devel库
     
    具体编译过程:
    如果已安装相关devel库,则直接编译python3即可解决。
    下面是根据TarBall方式安装各依赖包至非标准目录,最后编译python3。
    1.zlib。被sqlite3以及python3依赖。
      说明:zlib很简单,不需要复杂配置,直接编译即可。
      ./configure --prefix=/home/linuxuser/freeware/zlb
      make
      make install
     
    2.ncurses。被readline以及python依赖。 
      ./configure --prefix=/home/linuxuser/freeware/ncurses --without-cxx --without-cxx-binding --with-shared
      make
      make install
     
    3.readline。被python依赖。
      说明:需要在编译选项中配置ncurses安装目录,生成makefile时,使用编译选项--with-curses替换对termcap依赖。
      export CFLAGS="-I/home/linuxuser/freeware/ncurses/include"
      export LDFLAGS="-L/home/linuxuser/freeware/ncurses/lib"
      ./configure --prefix=/home/linuxuser/freeware/readline --with-curses
      make
      make install
     
    4.sqlite3。被python3依赖。
      说明:需要在编译选项中配置readline、ncurses目录以便sqlite3可执行程序,可以使用退格。此步骤可选。
                 需要在编译选项中配置zlib、pthread、dl等选项,可选。
       export CPPFLAGS="-I/home/linuxuser/freeware/ncurses/include -I/home/linuxuser/freeware/readline/include  -I/home/linuxuser/freeware/zlib/include"
       export LDFLAGS="-L/home/linuxuser/freeware/ncurses/lib -L/home/linuxuser/freeware/readline/lib -L/home/linuxuser/freeware/zlib/lib"
       export LIBS="-lpthread -lz -lncurses"
       ./configure --prefix=/home/linuxuser/freeware/sqlite3 --enable-readline
       make
       make install
     
    5.python3
      说明:配置以上各组件目录。注意ncurses的头文件包含目录需要多配置一层,即/home/linuxuser/freeware/ncurses/include/ncurses
      export CPPFLAGS="-I/home/linuxuser/freeware/ncurses/include -I/home/linuxuser/freeware/ncurses/include/ncurses -I/home/linuxuser/freeware/sqlite3/include/
                                        -I/home/linuxuser/freeware/readline/include -I/home/linuxuser/freeware/zlib/include"
      export LDFLAGS="-L/home/linuxuser/freeware/ncurses/lib -L/home/linuxuser/freeware/readline/lib -L/home/linuxuser/freeware/zlib/lib -L/home/linuxuser/freeware/sqlite3/lib"
      export LIBS="-lncurses"
      ./configure --prefix=/home/linuxuser/freeware/python3 --enable-shared
      make
      make install
     
      按照此步骤,常见组件安装ok
      可以看make结果,sqlite3 curses readline都没有在失败列表
         Python build finished successfully!
         The necessary bits to build these optional modules were not found:
         _bz2                  _dbm                  _gdbm             
         _lzma                 _ssl                  _tkinter           
         To find the necessary bits, look in setup.py in detect_modules() for the module's name.
         
         The following modules found by detect_modules() in setup.py, have been
         built by the Makefile instead, as configured by the Setup files:
         atexit                pwd                   time       
     
    编译完成后,配置 LD_LIBRARY_PATH 大功告成。
     
  • 相关阅读:
    thinkphp使用ajax
    thinkphp修改和删除数据
    thinkphp添加数据
    thinkphp中的查询语句
    thinkphp模型
    空控制器的处理
    thinkphp3.2.3版本文件目录及作用
    12月18日Smarty文件缓存
    12月15日smarty模板基本语法
    12月13日上午Smarty模版原理
  • 原文地址:https://www.cnblogs.com/w1618/p/8596642.html
Copyright © 2011-2022 走看看