ubuntuシステムにおけるpythonバージョンのアップグレード


  • pip  ImportError: No module named _internal
  • python -m pip install --upgrade pip
  • 元のバージョン情報を表示
    [tmp@l22-240-142 ~]$ python -V
    Python 2.7.5
    [tmp@l22-240-142 ~]$ which python
    /bin/python
  • ダウンロード依存ファイル
    [tmp@l22-240-142 ~]$ apt-get build-dep python2.7
  • python官网下载需要的版本,ここでは2.7.14を例に、Gzipped source tarball(.tgz)とXZ compressed source tarball(.tar.xz)の2種類の圧縮形式があり、ファイルの内容は同じである.tar.xzファイルの占有スペースが小さい.ダウンロードして解凍します.
    [tmp@l22-240-142 ~]$ wget https://www.python.org/ftp/python/2.7.14/Python-2.7.14.tgz
    [tmp@l22-240-142 ~]$ time tar -xzf Python-2.7.14.tgz
  • コンパイルパス
    [tmp@l22-240-142 ~]$ mkdir -p /usr/local/python2.7.14
  • を作成する.
  • [tmp@l22-240-142 ~]$ ./configure --prefix=/usr/local/  –enable-shared CFLAGS=-fPIC 
    [tmp@l22-240-142 ~]$ make && make install >>make.log
  • をコンパイルしてインストール
  • 接続ファイル
    [tmp@l22-240-142 ~]$ cd /bin  #/bin   which python   python  
    [tmp@l22-240-142 bin]$ mv python python2.7.5  
    [tmp@l22-240-142 bin]$ ln -s /usr/local/python2.7.14/bin/python python
  • を更新する.
  • 更新pip
    [tmp@l22-240-142 ~]$ wget https://bootstrap.pypa.io/get-pip.py
    [tmp@l22-240-142 ~]$ python get-pip.py
  • アップグレード中に発生した問題
  • Q:python使用中にモジュールが不足しています.例えば'bz 2,tkinter'など、これらのモジュールはpythonをコンパイルする際にシステムに対応するモジュールが見つからないため、コンパイルに参加していない.具体的にコンパイルされていないモジュールはログmakeを表示することができる.logでは、以下のヒントが得られます.
  • Python build finished, but the necessary bits to build these modules were not found:
    _bsddb             _curses            _curses_panel
    _sqlite3           _tkinter           bsddb185
    dbm                dl                 gdbm
    imageop            readline           sunaudiodev
    To find the necessary bits, look in setup.py in detect_modules() for the module's name.

    A:依存ファイルの一部をダウンロードしたにもかかわらず、ダウンロードされていないモジュールがあります.この問題を解決する根本的な方法は、コンパイルされていないモジュールを表示し、インストールすることです.注意:これらの未コンパイルモジュールを無視しないでください.その後の使用では、モジュールがコンパイルされていないためpythonが再コンパイルされ、対応するインストールpipが再コンパイルされます.これは、すでにインストールされているすべてのモジュールが再インストールされる必要があることを意味します.
  • Q:ロードモジュールに次のエラーが表示されます.
  • can not be used when making a shared object; recompile with -fPIC
    /usr/local/lib/libprotobuf.a: error adding symbols: Bad value
    collect2: error: ld returned 1 exit status

    A:コンパイル時に構成項目がない–enable-shared CFLAGS=-fPIC
     
  • Q:コンパイルフォルダのpythonバージョンがまだ古いpythonバージョン
  • A:これは、/usr/bin/python、/usr/local/bin/pythonなど、システムに複数のpythonが存在するためです.特定のpythonパスはwhich pythonで表示し、/usr/local/python 2.7.14/binのpythonは対応する位置に接続すればよい.