@takahashi403

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

Pythonの仮想環境でインストールしたライブラリをインポートできない

Pythonの仮想環境にrequestsをインストールしましたが、プログラムを実行するとモジュールが見つからないというエラーが発生します。

以下のコマンドを実行しました。
python -m venv .venvsource .venv/bin/activatepip install requests

インストールは成功しています。
Successfully installed requests

しかし、以下のコードを実行すると、
import requests
response=requests.get("https://example.com")print(response.status_code)

次のエラーが表示されます。
ModuleNotFoundError: No module named 'requests'

pip listではrequestsが表示されますが、python-c"import requests"を実行すると、同じエラーが発生します。

実現したいこと
pipとpythonが同じ仮想環境に属しているかどうかを確認する方法

0 likes

2Answer

一応念のために再び確認しておきますが

python -m venv .venvsource .venv/bin/activatepip install requests

コレは記載ミスですか?
このまま実行したわけでは無いですよね?
普通ならアクティベートした瞬間にプロンプトの先頭の記載が変わるはずです(行の先頭に(.venv)の表記が付いてくるはずです)。

python -m venv .venv
source ./.venv/bin/activate
pip install requests

envあるいはprintenvで環境変数が一時的に上書きされているはずです。

それに、アクティベートに成功してるならdeactivateもできるはずです。

0Like

投稿する前に、プレビューでしっかり投稿内容を確認しましょう。
少なくとも、STSyntheさんが指摘しているようなことはなくなるはずです。

また、コードや、コマンド、出力結果などは、コードブロックで囲むと見やすくなります。


本題。

pipとpythonが同じ仮想環境に属しているかどうかを確認する方法

まず、

python -c "import sys; print(sys.executable)"

を実行してください。すると、

/usr/bin/python

というように、pythonの実行パスが出力されます。
次に、

pip debug

を実行してください。
かなり長いテキストが出力されますが、その中で、sys.executable: の項目を見つけてください。

sys.executable: /usr/bin/python

このパスが、上記のpythonのパスと同じであれば、同一環境と思っていいでしょう。


もっとも、自分は pip コマンドは叩かず、 python -m pip というコマンドを叩いてパッケージ管理しています。
こうすれば、確実に実行したpythonの環境が対象になります。
(更に念を押すと、仮想環境にいる際は実行するpythonが仮想環境のものかも確認します。)


あと、Windowsであれば where コマンドを使いましょう。
コマンドが、どの実行ファイルで実行されるかわかります。

0Like

Your answer might help someone💌