仮想環境にてpipでインストールしたモジュールなのに、仮想環境を終了させた後にもインストールされていることが確認できてしまっています。

投稿者: Anonymous

自分はWindows10、Python3.8.1、virtualenv20.0.7を使っております。
virtualenvの使い方を学び直していたら次の問題にあたりました。

質問内容は「なぜ仮想環境を起動させながらpipでインストールしたモジュール(ここでは練習用としてpip-reviewを選びました)なのに、仮想環境を終了させた後にもインストールされていることがpip listで確認できるのか?」ということです。
仮想環境でインストールしたのだから他の環境には一切の影響が無いのではありませんでしたか?自分の予想では仮想環境を起動している時だけpip listでpip-reviewが表示されて、終了している時にはpip listを実行してもpip-reviewが表示されないと思っておりました。
どうすればちゃんと仮想環境だけにインストールできるようになるのでしょうか?

次にそのコードを載せます。
ただ、エラーメッセージは次の文を除いては他には何もありませんでした。
エラーメッセージというよりは警告文でしょうか。

WARNING: You are using pip version 20.1.1; however, version 20.2.2 is available.
You should consider upgrading via the 'c:usersUserappdatalocalprogramspythonpython38python.exe -m pip install --upgrade pip' command.

まず、インストールする前に起動時と終了時のそれぞれでpip listを実行した結果です。
「作成したばかりなのだからたぶんデフォルトのモジュールだけ入っているのだろうな」と思っていたら違いました。以前にインストールしたものが起動後にも表示されました。
activateとdeactivateを実行した直後にsetコマンドを打って仮想環境の起動及び終了ができていることは確認しました。起動している時だけは_OLD_VIRTUAL_PROMPTや_OLD_VIRTUAL_PATHなどを確認できますのでちゃんと起動していると思います。終了している時にはこれらは確認できません。

>envscriptsactivate

>pip list
Package           Version
----------------- -------
appdirs           1.4.3
asgiref           3.2.5
astroid           2.3.3
beautifulsoup4    4.9.0
colorama          0.4.3
distlib           0.3.0
Django            3.0.4
django-bootstrap4 1.1.1
filelock          3.0.12
isort             4.3.21
lazy-object-proxy 1.4.3
mccabe            0.6.1
Pillow            7.2.0
pip               20.1.1
pylint            2.4.4
pytz              2019.3
setuptools        41.2.0
six               1.14.0
soupsieve         2.0
sqlparse          0.3.1
virtualenv        20.0.7
wrapt             1.11.2

>envscriptsdeactivate

>pip list
Package           Version
----------------- -------
appdirs           1.4.3
asgiref           3.2.5
astroid           2.3.3
beautifulsoup4    4.9.0
colorama          0.4.3
distlib           0.3.0
Django            3.0.4
django-bootstrap4 1.1.1
filelock          3.0.12
isort             4.3.21
lazy-object-proxy 1.4.3
mccabe            0.6.1
Pillow            7.2.0
pip               20.1.1
pylint            2.4.4
pytz              2019.3
setuptools        41.2.0
six               1.14.0
soupsieve         2.0
sqlparse          0.3.1
virtualenv        20.0.7
wrapt             1.11.2

続いて、起動している状態でpip-reviewをインストールした結果です。
しかし、仮想環境だけにインストールされたわけではないようです。

>pip install pip-review
Collecting pip-review
  Downloading pip_review-1.1.0-py3-none-any.whl (7.2 kB)
Collecting packaging
  Downloading packaging-20.4-py2.py3-none-any.whl (37 kB)
Requirement already satisfied: pip in c:usersUserappdatalocalprogramspythonpython38libsite-packages (from pip-review) (20.1.1)
Collecting pyparsing>=2.0.2
  Downloading pyparsing-2.4.7-py2.py3-none-any.whl (67 kB)
     |████████████████████████████████| 67 kB 256 kB/s
Requirement already satisfied: six in c:usersUserappdatalocalprogramspythonpython38libsite-packages (from packaging->pip-review) (1.14.0)
Installing collected packages: pyparsing, packaging, pip-review
Successfully installed packaging-20.4 pip-review-1.1.0 pyparsing-2.4.7

>pip list
Package           Version
----------------- -------
appdirs           1.4.3
asgiref           3.2.5
astroid           2.3.3
beautifulsoup4    4.9.0
colorama          0.4.3
distlib           0.3.0
Django            3.0.4
django-bootstrap4 1.1.1
filelock          3.0.12
isort             4.3.21
lazy-object-proxy 1.4.3
mccabe            0.6.1
packaging         20.4
Pillow            7.2.0
pip               20.1.1
pip-review        1.1.0
pylint            2.4.4
pyparsing         2.4.7
pytz              2019.3
setuptools        41.2.0
six               1.14.0
soupsieve         2.0
sqlparse          0.3.1
virtualenv        20.0.7
wrapt             1.11.2

>envscriptsdeactivate

>pip list
Package           Version
----------------- -------
appdirs           1.4.3
asgiref           3.2.5
astroid           2.3.3
beautifulsoup4    4.9.0
colorama          0.4.3
distlib           0.3.0
Django            3.0.4
django-bootstrap4 1.1.1
filelock          3.0.12
isort             4.3.21
lazy-object-proxy 1.4.3
mccabe            0.6.1
packaging         20.4
Pillow            7.2.0
pip               20.1.1
pip-review        1.1.0
pylint            2.4.4
pyparsing         2.4.7
pytz              2019.3
setuptools        41.2.0
six               1.14.0
soupsieve         2.0
sqlparse          0.3.1
virtualenv        20.0.7
wrapt             1.11.2

pip uninstall pip-reviewを起動中に実行したら起動中及び終了後のpip listからアンインストールされたことが確認できました。

あと、関係はあまり無いかもしれませんが一応こちらも載せておきます。

>envscriptsactivate

>where pip-review
C:UsersUserAppDataLocalProgramsPythonPython38Scriptspip-review.exe

>envscriptsdeactivate

>where pip-review
C:UsersUserAppDataLocalProgramsPythonPython38Scriptspip-review.exe

もし何か足りない情報がありましたら是非ともご指摘下さい。
よろしくお願い致します。

以下は追記です。

>コメントでは書式が貧弱だし分割されて正確では無いので質問記事の方に追記してください。それとactivateの前と後の両方でお願いします。

active後です。

Path=C:UsersuserDesktop繝昴・繝医ヵ繧ゥ繝ェ繧ェDjango縺ョ繝昴・繝医ヵ繧ゥ繝ェ繧ェrensyuu_20200816starteeenvScripts;
C:Program Files (x86)InteliCLS Client;
C:Program FilesInteliCLS Client;
C:WINDOWSsystem32;
C:WINDOWS;
C:WINDOWSSystem32Wbem;
C:WINDOWSSystem32WindowsPowerShellv1.0;
C:Program Files (x86)IntelIntel(R) Management Engine ComponentsDAL;
C:Program FilesIntelIntel(R) Management Engine ComponentsDAL;
C:Program Files (x86)IntelIntel(R) Management Engine ComponentsIPT;
C:Program FilesIntelIntel(R) Management Engine ComponentsIPT;
C:Program FilesIntelWiFibin;
C:Program FilesCommon FilesIntelWirelessCommon;
C:WINDOWSSystem32OpenSSH;
C:Program FilesGitcmd;
C:UsersuserAppDataLocalProgramsPythonPython37;
C:UsersuserAppDataLocalProgramsPythonPython37Scripts;
C:Program Filesnodejs;C:ProgramDatachocolateybin;
C:Program Files (x86)Yarnbin;C:HashiCorpVagrantbin;
C:UsersuserAppDataLocalProgramsPythonPython38Scripts;
C:UsersuserAppDataLocalProgramsPythonPython38;
C:UsersuserAppDataLocalProgramsPythonPython37Scripts;
C:UsersuserAppDataLocalProgramsPythonPython37;
C:Ruby26-x64bin;
C:UsersuserAppDataLocalMicrosoftWindowsApps;
C:UsersuserAppDataLocalatombin;
C:UsersuserAppDataLocalProgramsMicrosoft VS Codebin;
C:UsersuserAppDataRoamingnpm;
C:UsersuserAppDataLocalYarnbin

active前です。しかし、new_eeenvを作成後のsetコマンド表示なので、それ以前とは何か変わったかもしれないです。

Path=C:Program Files (x86)InteliCLS Client;
C:Program FilesInteliCLS Client;
C:WINDOWSsystem32;
C:WINDOWS;
C:WINDOWSSystem32Wbem;
C:WINDOWSSystem32WindowsPowerShellv1.0;
C:Program Files (x86)IntelIntel(R) Management Engine ComponentsDAL;
C:Program FilesIntelIntel(R) Management Engine ComponentsDAL;
C:Program Files (x86)IntelIntel(R) Management Engine ComponentsIPT;
C:Program FilesIntelIntel(R) Management Engine ComponentsIPT;
C:Program FilesIntelWiFibin;
C:Program FilesCommon FilesIntelWirelessCommon;
C:WINDOWSSystem32OpenSSH;
C:Program FilesGitcmd;
C:UsersuserAppDataLocalProgramsPythonPython37;
C:UsersuserAppDataLocalProgramsPythonPython37Scripts;
C:Program Filesnodejs;
C:ProgramDatachocolateybin;
C:Program Files (x86)Yarnbin;
C:HashiCorpVagrantbin;
C:UsersuserAppDataLocalProgramsPythonPython38Scripts;
C:UsersuserAppDataLocalProgramsPythonPython38;
C:UsersuserAppDataLocalProgramsPythonPython37Scripts;
C:UsersuserAppDataLocalProgramsPythonPython37;
C:Ruby26-x64bin;
C:UsersuserAppDataLocalMicrosoftWindowsApps;
C:UsersuserAppDataLocalatombin;
C:UsersuserAppDataLocalProgramsMicrosoft VS Codebin;
C:UsersuserAppDataRoamingnpm;
C:UsersuserAppDataLocalYarnbin

>この時点で考えられる最初の原因は、virtualenvで作るフォルダの途中階層のフォルダ名にShiftJISらしき全角文字が使われていることです。

おかげ様で上手くいったようです。ありがとうございます。

パス名となるフォルダ名を書き換えました。ただ、フォルダ名を変更する
より以前に作った仮想環境だと変更前のフォルダ名、パスのままであるようです。
変更を適用してくれないようです。
次のパスは改めて適切なフォルダ名に変更した後に再び仮想環境を起動し、
setコマンドでPathを参照したものです。

C:UsersuserDesktop繝昴・繝医ヵ繧ゥ繝ェ繧ェDjango縺ョ繝昴・繝医ヵ繧ゥ繝ェ繧ェrensyuu_sns20200816starteeenvScripts

ですので、既存のパスを書き換える方法もあるのかもしれませんが、
新たに別の仮想環境を作って確認することにしました。

C:UsersuserDesktopPortfolioDjango_portfoliorensyuu_sns20200816start>new_eeenvscriptsactivate

setコマンドで確認

Path=C:UsersuserDesktopPortfolioDjango_portfoliorensyuu_sns20200816startnew_eeenvScripts;
C:UsersuserDesktopPortfolioDjango_portfoliorensyuu_sns20200816start>pip list
Package    Version
---------- -------
pip        20.0.2
setuptools 45.2.0
wheel      0.34.2

C:UsersuserDesktopPortfolioDjango_portfoliorensyuu_sns20200816start>pip install pip-review
Collecting pip-review
  Using cached pip_review-1.1.0-py3-none-any.whl (7.2 kB)
Collecting packaging
  Using cached packaging-20.4-py2.py3-none-any.whl (37 kB)
Requirement already satisfied: pip in c:usersuserdesktopportfoliodjango_portfoliorensyuu_sns20200816startnew_eeenvlibsite-packages (from pip-review) (20.0.2)
Collecting six
  Downloading six-1.15.0-py2.py3-none-any.whl (10 kB)
Collecting pyparsing>=2.0.2
  Using cached pyparsing-2.4.7-py2.py3-none-any.whl (67 kB)
Installing collected packages: six, pyparsing, packaging, pip-review
Successfully installed packaging-20.4 pip-review-1.1.0 pyparsing-2.4.7 six-1.15.0
WARNING: You are using pip version 20.0.2; however, version 20.2.2 is available.
You should consider upgrading via the 'C:UsersuserDesktopPortfolioDjango_portfoliorensyuu_sns20200816startnew_eeenvScriptspython.exe -m pip install --upgrade pip' command.

ここには書いていませんがDjangoも新たにインストールしておりました。

C:UsersuserDesktopPortfolioDjango_portfoliorensyuu_sns20200816start>pip list
Package    Version
---------- -------
asgiref    3.2.10
Django     3.1
packaging  20.4
pip        20.0.2
pip-review 1.1.0
pyparsing  2.4.7
pytz       2020.1
setuptools 45.2.0
six        1.15.0
sqlparse   0.3.1
wheel      0.34.2

解決

この時点で考えられる最初の原因は、virtualenvで作るフォルダの途中階層のフォルダ名にShiftJISらしき全角文字が使われていることです。
本当に全角文字が使われているのなら、それは破棄して全角文字を使わないフォルダ構成に作り直した方が良いでしょう。

Path=C:UsersuserDesktop繝昴・繝医ヵ繧ゥ繝ェ繧ェDjango縺ョ繝昴・繝医ヵ繧ゥ繝ェ繧ェrensyuu_20200816starteeenvScripts;

もう一つはPythonを複数インストールしたかインストール/アンインストールを繰り返した残骸か、PATHに複数のPythonフォルダが記述されています。

C:UsersuserAppDataLocalProgramsPythonPython37;
C:UsersuserAppDataLocalProgramsPythonPython37Scripts;
C:Program Filesnodejs;
C:ProgramDatachocolateybin;
C:Program Files (x86)Yarnbin;
C:HashiCorpVagrantbin;
C:UsersuserAppDataLocalProgramsPythonPython38Scripts;
C:UsersuserAppDataLocalProgramsPythonPython38;
C:UsersuserAppDataLocalProgramsPythonPython37Scripts;
C:UsersuserAppDataLocalProgramsPythonPython37;

残骸ならば、正しいフォルダを1つだけ残して他は削除しましょう。

複数インストールしている場合は、PATHにPythonのフォルダを登録するのではなく、Pythonランチャーを使うようにした方が良いでしょう。
以下記事を参考に。
WindowsユーザーはPythonランチャーの存在を意識しましょう
Pythonの複数バージョンの扱い方(Windowsの場合)

回答者: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *