2017年1月25日水曜日

開発環境

MacPorts に python36 があったから、python 3.5 から python 3.6 に変更、アップグレードしようとしたらつまずいたからメモ。

  1. Python 3.5 をアンインストール。
    $ sudo port uninstall python35
  2. Python 3.6 をインストール。
    $ sudo port install python36
  3. Python 3.6 のインストール時に、
    ##############################################################
    # IF YOU ARE USING PYTHON FROM THE TERMINAL, PLEASE INSTALL:
    #   py36-readline
    # TO AVOID A LIBEDIT / PYTHON INTERACTION ISSUE.
    # REF: https://trac.macports.org/ticket/48807
    ##############################################################
    と出力されたから、とりあえず、実際にどうなるか確認してみる。
    $ python3
    Python 3.6.0 (default, Dec 23 2016, 12:50:55) 
    [GCC 4.2.1 Compatible Apple LLVM 8.0.0 (clang-800.0.38)] on darwin
    Type "help", "copyright", "credits" or "license" for more information.
    >>> 
    
    >>> quit()
    quit()
    >>> $ 
    
    $ 
    
    入力がそのまま出力されたり、余分な空白行が挿入されるみたい。
  4. ということで、py36-readline をインストール。
    $ sudo port install py36-readline
  5. Terminal で正常に使用できるか確認すると、
    $ python3
    Python 3.6.0 (default, Dec 23 2016, 12:50:55) 
    [GCC 4.2.1 Compatible Apple LLVM 8.0.0 (clang-800.0.38)] on darwin
    Type "help", "copyright", "credits" or "license" for more information.
    >>> 1+2
    Python(37171,0x7fffa822b3c0) malloc: *** error for object 0x104bec640: pointer being freed was not allocated
    *** set a breakpoint in malloc_error_break to debug
    Abort trap: 6
    $
    
    という感じで使えない。
  6. 使えないなら、入力がそのまま出力されたり、余分な空白行が挿入されても使える方がいいから、py36-readline をアンインストール。
    $ sudo port uninstall py36-readline
  7. と言いつつも、入力がそのまま出力されたり、余分な空白行が挿入されない方がいいと思って、もしかしてと思い、 variants で確認。
    $ port variants python36
    python36 has the variants:
       readline: Use readline instead of libedit
       universal: Build for multiple architectures
    $   
    
    readline を発見。
  8. ということで、py36-readlineではなく、こちらの readline をインストールしてみる。
    $ sudo port install python36 +readline
  9. 3.と同様に、
    ##############################################################
    # IF YOU ARE USING PYTHON FROM THE TERMINAL, PLEASE INSTALL:
    #   py36-readline
    # TO AVOID A LIBEDIT / PYTHON INTERACTION ISSUE.
    # REF: https://trac.macports.org/ticket/48807
    ##############################################################
    が出力される。
  10. 再び、実際にどうなるか確認してみる。
    $ python3
    Python 3.6.0 (default, Jan 25 2017, 15:04:34) 
    [GCC 4.2.1 Compatible Apple LLVM 8.0.0 (clang-800.0.42.1)] on darwin
    Type "help", "copyright", "credits" or "license" for more information.
    >>> 1+2
    3
    >>> quit()
    $ 
    $ 
    
    先ほどとは違い、問題なく動作。
  11. 最後に、readline 無しの python36 をバージョンを確認してからアンインストール。
    $ port installed python36
    The following ports are currently installed:
      python36 @3.6.0_0
      python36 @3.6.0_0+readline (active)
    $ sudo port uninstall python36 @3.6.0_0
    Password:
    --->  Uninstalling python36 @3.6.0_0
    --->  Cleaning python36
    $ 
    

0 コメント:

コメントを投稿