Python venv 仮想環境の親ディレクトリの名前が変更または移動された後、ライブラリが見つかりません。ModuleNotFoundError: 'xxx' という名前のモジュールがありません (python3 -m venv xxx で再作成できます)

背景

ここに画像の説明を挿入します

ここに画像の説明を挿入します

.venv-python3.8-testVideoEncodePyubuntu20.04 venv 仮想環境の親ディレクトリの名前を変更し、 、execute を使用するとsource .venv-python3.8-testVideoEncodePy/bin/activatecv2python3 test.pyModuleNotFoundError: No module named 'cv2'明らかにここにあることを示すプロンプトが表示されました.venv-python3.8-testVideoEncodePy/lib/python3.8/site-packages/cv2/

ここに画像の説明を挿入します

説明する

これは、venv 仮想環境が配置されている親ディレクトリの名前を変更し、Python モジュールの検索パス (sys.path) が更新されていないため、cv2 モジュールが見つからないことが原因である可能性があります。

まず、Python の import ステートメントは、動作時に sys.path リスト内のディレクトリを検索します。通常、このリストには、現在のディレクトリ、システムにインストールされたライブラリ、およびサードパーティのライブラリ (仮想環境など) が含まれます。仮想環境の場所を変更すると (親ディレクトリ名を変更することで)、Python は sys.path リスト内で正しいパスを見つけられず、その結果 cv2 を見つけることができない場合があります。

解決

方法 1: 次のコマンドを使用してpython3 -m venv xxx仮想環境を再作成します。

この問題を解決する 1 つの方法は、仮想環境を再作成することです。

  1. まず、現在の仮想環境を非アクティブ化します。deactivate
  2. 次に、新しいディレクトリに仮想環境を再作成します。
python3 -m venv .venv-python3.8-testVideoEncodePy
  1. 新しい仮想環境をアクティブ化します。
source .venv-python3.8-testVideoEncodePy/bin/activate
  • テスト:
    終了せずに仮想環境を直接再作成しました:
    ここに画像の説明を挿入します
    次に、仮想環境を終了し、再度仮想環境に入り、プログラムを実行しました。直接実行できます:
    ここに画像の説明を挿入します

この方法では、python3 -m venv xxx同じ名前の既存の仮想環境を作成する場合、以前の仮想環境にインストールされているライブラリをクリアせずに、sys.path を再構築するだけで済みます。悪くない。

方法 2: sys.path を調整する

もう 1 つの可能な解決策は、正しいパスが含まれるように sys.path を直接調整することです。ただし、sys.path が誤って変更されると他の問題が発生する可能性があるため、この方法は注意して使用する必要があります。一般に、仮想環境を再作成する方がより信頼性の高い方法です。

‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅟ⅍ ᅠ‌‍ᅟᅠ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ‌‌‌ ‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍៟ ‌‍ᅟᅠ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ‌‍ᅟᅠ⅌ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌⍌ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅟ⅍ ᅠ‌‍ᅟᅠ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ‌‌‌ ‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍៟ ‌‍ᅟᅠ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ‌‍ᅟᅠ⅌ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌⍌ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅟ⅍ ᅠ‌‍ᅟᅠ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ‌‌‌ ‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍៟ ᅠ‌‍ᅟᅠ‌‍ᅟᅠ‌‍ᅟᅠ‌‍ᅟᅠ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ‌‌‌ ‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍៟ ‌‍ᅟᅠ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ‌‍ᅟᅠ⅌ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌⍌ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅟ⅍ ᅠ‌‍ᅟᅠ‌‍ᅟᅠ‌‍ᅟᅠ‌‍ᅟᅠ‌‍ᅟᅠ‌‍‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ‌‌‌ ‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍៟ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ‌‍ᅟᅍ‌‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ‌‌‌ ‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍៟ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ‌‍ᅟᅍ‌
‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅟ⅍ ᅠ‌‍ᅟᅠ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ

おすすめ

転載: blog.csdn.net/Dontla/article/details/133141304