質問: Python3.5.1 にてparamikoというssh通信機能を追加するモジュールをコマンドプロンプト上で追加しようとした所、下記のようなエラーが出てインストールができませんでした。 ``` C:\Users\tishi>py -m pip install paramiko Traceback (most recent call last): File "C:\Users\tishi\AppData\Local\Programs\Python\Python35\lib\runpy.py", line 170, in _run_module_as_main "__main__", mod_spec) File "C:\Users\tishi\AppData\Local\Programs\Python\Python35\lib\runpy.py", line 85, in _run_code exec(code, run_globals) File "C:\Users\tishi\AppData\Local\Programs\Python\Python35\lib\site-packages\pip__main__.py", line 21, in from pip._internal.cli.main import main as _main File "C:\Users\tishi\AppData\Local\Programs\Python\Python35\lib\site-packages\pip_internal\cli\main.py", line 60 sys.stderr.write(f"ERROR: {exc}") ^ SyntaxError: invalid syntax ``` インストール方法については下記の入力を行いました。 ``` py -m pip install paramiko ``` この問題についてご教授いただけると幸いです、よろしくお願いいたします。
回答: エラーメッセージに示されているように、文字列と変数の編集指定である`f"ERROR: {exc}"`はフォーマット済み文字列リテラルと言って、Python 3.6 からサポートされている仕様です。 お使いの3.5.1ではサポートしていないため`SyntaxError: invalid syntax`になっているのでしょう。 Pythonのf文字列(フォーマット済み文字列リテラル)の使い方 > > Python3.6からf文字列(f-strings、フォーマット文字列、フォーマット済み文字列リテラル)という仕組みが導入され、冗長だった文字列メソッドformat()をより簡単に書けるようになった。 > > > > > 3.5以前のバージョンでは使えないので注意。 > > > フォーマット済み文字列リテラル(f文字列)を使った文字列の書式設定 > > 文字列の書式化を行うときに、 format メソッドによる方法をより簡潔に行える方法として Python 3.6 からフォーマット済み文字列リテラル(f文字列)が利用できるようになりました。 > > > 現実的な対処はPythonの版数を3.6以上に上げることでしょうか。 @metropolis さんのコメントを見て: 良く見ると問題が発生しているのは`paramiko`ではなく`pip`のようですね。 pip 20.3.4 - PyPI を見ると、この版まではPython2.7/3.5もサポートされているようで、つい最近(2021年1月23日)にPython3.6以後のみサポートの21.0系とPython2.7/3.5もサポートの20.3系に分かれて両方が同日にReleaseされています。 Release history - pip - PyPI 既にpipが21.x系にUpgradeされていると、そのモジュールを使うと何をやっても駄目な可能性もありますが、いくつかの方法を試してpipの版数を下げれば良さそうです。 * そのままの状態で pip 自身を 20.3.4 までの古い版数指定でインストールし直す * @metropolis さん紹介の方法で Python3.5 対応の pip をインストールする * Python 3.5.1 環境を新たに作成し直して、そこに Python3.5 対応の pip をインストールする