私はpython3 -m pytest
を使用してテストを実行しています。これは、python3がpython3.6を指しているときに機能していました。私はpython3.7をインストールし、次のコマンドを使用してpython3.7をデフォルトのpython3にしました:
Sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.6 1
Sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.7 2
Sudo update-alternatives --config python3
python3.7に必要なすべてのパッケージを再度インストールしました。しかし、今はもうテストを実行できません。それは言う:/usr/bin/python3: No module named pytest
。私は仮想環境を使用しておらず、他のモジュールも見つからないため、問題は特定のモジュールに関するものではありません。これは、pythonパスに関連している必要があります。python3バージョンを切り替えた後に何を変更すればよいかわからないため、/home/ubuntu/.local/lib/python3.x/site-packages/
で必要なモジュールを簡単に見つけることができます。
私はpython3.6に切り替えてModuleNotFoundError: No module named 'jsonpath_ng'
を取得しました。これはpython3.7に切り替える前に機能していました。これはpython3 -m site
の出力です。
sys.path = [
'/home/ubuntu',
'/usr/lib/python36.Zip',
'/usr/lib/python3.6',
'/usr/lib/python3.6/lib-dynload',
'/home/ubuntu/.local/lib/python3.6/site-packages',
'/usr/local/lib/python3.6/dist-packages',
'/usr/lib/python3/dist-packages',
]
USER_BASE: '/home/ubuntu/.local' (exists)
USER_SITE: '/home/ubuntu/.local/lib/python3.6/site-packages' (exists)
ENABLE_USER_SITE: True
@hoeflingに感謝します。python3 -m site
を実行して問題を見つけました。 rootユーザーのすべてをインストールしているときに、rootではなくjenkinsユーザーでテストを実行していました。そのため、jenkinsユーザーのUSER_SITEは実際には存在しませんでした。 jenkinsユーザー用にすべてを再インストールしましたが、python3 -m
を使用すると、モジュールを見つけることができます。