Debian でアップデートの代替手段を使用して Python3.7.9 に切り替えると、Pip がクラッシュします。

Debian でアップデートの代替手段を使用して Python3.7.9 に切り替えると、Pip がクラッシュします。

私はpython3.9に付属のDebian 11を使用しています。しかし、必要ありません。 python3.7が必要です。だから私はpythonn3.7.9をインストールし、代替を更新しました。

問題は、Pythonのバージョンを3.7.9に切り替えると、pipを使用して何もインストールできないことです。pip installコマンドで次のエラーが発生します。

sudo pip3 install requests
[sudo] password for deby: 
Traceback (most recent call last):
  File "/usr/bin/pip3", line 10, in <module>
    from importlib.metadata import distribution
ModuleNotFoundError: No module named 'importlib.metadata'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/bin/pip3", line 13, in <module>
    from importlib_metadata import distribution
ModuleNotFoundError: No module named 'importlib_metadata'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/local/lib/python3.7/site-packages/pkg_resources/__init__.py", line 584, in _build_master
    ws.require(__requires__)
  File "/usr/local/lib/python3.7/site-packages/pkg_resources/__init__.py", line 901, in require
    needed = self.resolve(parse_requirements(requirements))
  File "/usr/local/lib/python3.7/site-packages/pkg_resources/__init__.py", line 792, in resolve
    raise VersionConflict(dist, req).with_context(dependent_req)
pkg_resources.VersionConflict: (pip 20.1.1 (/usr/local/lib/python3.7/site-packages), Requirement.parse('pip==20.3.4'))

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/bin/pip3", line 15, in <module>
    from pkg_resources import load_entry_point
  File "/usr/local/lib/python3.7/site-packages/pkg_resources/__init__.py", line 3261, in <module>
    @_call_aside
  File "/usr/local/lib/python3.7/site-packages/pkg_resources/__init__.py", line 3245, in _call_aside
    f(*args, **kwargs)
  File "/usr/local/lib/python3.7/site-packages/pkg_resources/__init__.py", line 3274, in _initialize_master_working_set
    working_set = WorkingSet._build_master()
  File "/usr/local/lib/python3.7/site-packages/pkg_resources/__init__.py", line 586, in _build_master
    return cls._build_from_requirements(__requires__)
  File "/usr/local/lib/python3.7/site-packages/pkg_resources/__init__.py", line 599, in _build_from_requirements
    dists = ws.resolve(reqs, Environment())
  File "/usr/local/lib/python3.7/site-packages/pkg_resources/__init__.py", line 787, in resolve
    raise DistributionNotFound(req, requirers)
pkg_resources.DistributionNotFound: The 'pip==20.3.4' distribution was not found and is required by the application

しかし、Python3.9に戻ったときにPipが機能しました。この問題を解決する方法がわかりません。 Googleで見つけましたが、同様の問題を抱えている人がいる質問が見つかりませんでした。

ここに画像の説明を入力してください。

答え1

最初の例外ModuleNotFoundError: No module named 'importlib_metadata'はpipが見つからないことです。import library.metadataPython 3.8にモジュールが追加されたため、DebianリポジトリのpipはPython 3.7の手動インストールと互換性がありません。以前のバージョンの pip を手動でインストールできますが、設定できる Python 仮想環境を使用することをお勧めします。さまざまなPythonバージョン

だからあなたは次のことをすることができます

$ python3.7 -m venv python37
$ source python37/bin/activate

/usr/bin/python3実際にシステム全体を変更したり、pip以外のものを損なうことなくインストールされたPython 3.7バージョンを使用してください。

関連情報