pip実行時にsys.stderr.write(f"ERROR: {exc} “) とエラーが出たときの対処法

pip実行時にsys.stderr.write(f"ERROR: {exc} “) とエラーが出たときの対処法

  • 目次

    一年に一回は遭遇している気がするのでメモしておきます。

    環境

    • Ubuntu16.04
    • python3.5.2

    対処方法

    pip install --upgrade pipを実行した後にpipを実行すると以下のようなエラーがでることがあります。

    Traceback (most recent call last):
      File "get-pip.py", line 24226, in <module>
        main()
      File "get-pip.py", line 199, in main
        bootstrap(tmpdir=tmpdir)
      File "get-pip.py", line 82, in bootstrap
        from pip._internal.cli.main import main as pip_entry_point
      File "/tmp/tmpUgc5ng/pip.zip/pip/_internal/cli/main.py", line 60
        sys.stderr.write(f"ERROR: {exc}")
                                       ^
    
    SyntaxError: invalid syntax
    

    これは、f""という記述がpython3.5ではサポートされていないことが原因です。python3.6からこの記述はサポートされています。
    Ubuntuには、デフォルトでpython2.X系が入っているので、python3.X系、python2.X系の両方を直します。
    まず、python2.X系の対処法です。

    $ wget https://bootstrap.pypa.io/pip/2.7/get-pip.py
    $ python get-pip.py
    

    つぎに、python3.X系の対処法です。
    上記と同様に実行すると以下のようなエラーに遭遇したため、/usr/bin/pip3を削除してからインストールしました。

    $ python get-pip.py
    Traceback (most recent call last):
      File "get-pip.py", line 24, in <module>
        import pkgutil
    ImportError: No module named pkgutil
    

    以下が手順です。

    $ sudo apt-get --purge autoremove python3-pip
    $ wget https://bootstrap.pypa.io/pip/3.5/get-pip.py
    $ python3 get-pip.py 
    

    そもそもの対処法

    pip install --upgrade pipをする際に、サポートされているバージョンを以下のように指定していれば、このようなエラーは発生しないと思います。

    $ pip3 install --upgrade pip==20.3
    

    参考文献

    comments powered by Disqus