web-dev-qa-db-ja.com

/ usr / bin / python3:pytestという名前のモジュールはありません

私は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
2

@hoeflingに感謝します。python3 -m siteを実行して問題を見つけました。 rootユーザーのすべてをインストールしているときに、rootではなくjenkinsユーザーでテストを実行していました。そのため、jenkinsユーザーのUSER_SITEは実際には存在しませんでした。 jenkinsユーザー用にすべてを再インストールしましたが、python3 -mを使用すると、モジュールを見つけることができます。

1