75021


Python3.5.1
にてparamikoというssh通信機能を追加するモジュールをコマンドプロンプト上で追加しようとした所、下記のようなエラーが出てインストールができませんでした。

[code]

    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 <module>
        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
    
[/code]

インストール方法については下記の入力を行いました。

[code]

    py -m pip install paramiko
    
[/code]

この問題についてご教授いただけると幸いです、よろしくお願いいたします。


CC BY-SA 4.0
2021-04-01T09:19:22.420
75016
2021-04-02T00:40:42.557
44593
question
python python3
Python3.5.1 にてparamiko モジュールをインストールしようとするとinvalid syntaxが発生しインストールができません


エラーメッセージに示されているように、文字列と変数の編集指定である`f"ERROR:
{exc}"`は[フォーマット済み文字列リテラル](https://docs.python.org/ja/3.8/tutorial/inputoutput.html#formatted-
string-literals)と言って、Python 3.6 からサポートされている仕様です。

お使いの3.5.1ではサポートしていないため`SyntaxError: invalid syntax`になっているのでしょう。

[Pythonのf文字列（フォーマット済み文字列リテラル）の使い方](https://note.nkmk.me/python-f-strings/)

>
> Python3.6からf文字列（f-strings、フォーマット文字列、フォーマット済み文字列リテラル）という仕組みが導入され、冗長だった文字列メソッドformat()をより簡単に書けるようになった。

> 3.5以前のバージョンでは使えないので注意。

[フォーマット済み文字列リテラル(f文字列)を使った文字列の書式設定](https://www.javadrive.jp/python/string/index25.html)

> 文字列の書式化を行うときに、 format メソッドによる方法をより簡潔に行える方法として Python 3.6
> からフォーマット済み文字列リテラル(f文字列)が利用できるようになりました。

現実的な対処はPythonの版数を3.6以上に上げることでしょうか。

* * *

@metropolis さんのコメントを見て：

良く見ると問題が発生しているのは`paramiko`ではなく`pip`のようですね。

[pip 20.3.4 - PyPI](https://pypi.org/project/pip/20.3.4/)
を見ると、この版まではPython2.7/3.5もサポートされているようで、つい最近(2021年1月23日)にPython3.6以後のみサポートの21.0系とPython2.7/3.5もサポートの20.3系に分かれて両方が同日にReleaseされています。

[Release history - pip - PyPI](https://pypi.org/project/pip/#history)

既にpipが21.x系にUpgradeされていると、そのモジュールを使うと何をやっても駄目な可能性もありますが、いくつかの方法を試してpipの版数を下げれば良さそうです。

  * そのままの状態で pip 自身を 20.3.4 までの古い版数指定でインストールし直す
  * @metropolis さん紹介の方法で Python3.5 対応の pip をインストールする
  * Python 3.5.1 環境を新たに作成し直して、そこに Python3.5 対応の pip をインストールする


CC BY-SA 4.0
2021-04-01T09:45:28.023
75021
2021-04-02T00:40:42.557
2021-04-02T00:40:42.557
26370
26370
75016
answer