現在、VagrantとVirtualBoxを用いて、仮想環境を構築して、作業してます。
その際に、pipのInstallで問題が起きたときの忘備録です。
モジュールのInstallが完了と出るのに、Installされていない
vagrantからssh接続を実施して、pythonの仮想環境を起動して、
必要なモジュールをInstallしようとすると
(scraping) vagrant@ubuntu-bionic:/home$ pip install requests
Collecting requests
Using cached https://files.pythonhosted.org/packages/51/bd/23c926cd341ea6b7dd0b2a00aba99ae0f828be89d72b2190f27c11d4b7fb/requests-2.22.0-py2.py3-none-any.whl
Requirement already satisfied: urllib3!=1.25.0,!=1.25.1,<1.26,>=1.21.1 in ./scraping/lib/python3.7/site-packages (from requests)
Requirement already satisfied: idna<2.9,>=2.5 in ./scraping/lib/python3.7/site-packages (from requests)
・
・
・
PermissionError: [Errno 13] Permission denied: '/home/scraping/lib/python3.7/site-packages/requests'
途中まで順調だがPermissionErrorで怒られる。
「pip install pyopenssl で Permission denied」を参考にオプションをつけると、確かにうまくいった。
しかし、
(scraping) vagrant@ubuntu-bionic:/home$ pip freeze
certifi==2019.9.11
chardet==3.0.4
idna==2.8
pkg-resources==0.0.0
urllib3==1.25.6
Installしたはずの「request」がない。
解決方法
管理者権限のあるユーザーで必要な仮想環境にモジュールをInstallする。
vagrant@ubuntu-bionic:/home$ sudo su #管理者権限をもつユーザに変更
root@ubuntu-bionic:/home# . scraping/bin/activate #仮想環境を起動
(scraping) root@ubuntu-bionic:/home# pip install requests
Collecting requests
Using cached https://files.pythonhosted.org/packages/51/bd/23c926cd341ea6b7dd0b2a00aba99ae0f828be89d72b2190f27c11d4b7fb/requests-2.22.0-py2.py3-none-any.whl
Requirement already satisfied: idna<2.9,>=2.5 in ./scraping/lib/python3.7/site-packages (from requests)
Requirement already satisfied: chardet<3.1.0,>=3.0.2 in ./scraping/lib/python3.7/site-packages (from requests)
Requirement already satisfied: certifi>=2017.4.17 in ./scraping/lib/python3.7/site-packages (from requests)
Requirement already satisfied: urllib3!=1.25.0,!=1.25.1,<1.26,>=1.21.1 in ./scraping/lib/python3.7/site-packages (from requests)
Installing collected packages: requests
Successfully installed requests-2.22.0
(scraping) root@ubuntu-bionic:/home# pip freeze
certifi==2019.9.11
chardet==3.0.4
idna==2.8
pkg-resources==0.0.0
requests==2.22.0
urllib3==1.25.6
「request」がInstallされた。
その後、再度、一般ユーザで確認しても
(scraping) vagrant@ubuntu-bionic:/home$ pip freeze
certifi==2019.9.11
chardet==3.0.4
idna==2.8
pkg-resources==0.0.0
requests==2.22.0
urllib3==1.25.6
「request」がInstallされている。
まとめ
管理者ユーザでモジュールをInstallすれば、問題なくできた。
であれば、一般ユーザ時にはオプションを付けたときに成功した分はどこにInstallされたのか。
デフォルトとしてユーザのベースバイナリディレクトリ ~/.local 下にパッケージがインストールされらるしいが、
それらしきディレクトリがみつからない。
見つけたら、また追記します。
参考文献
pip install pyopenssl で Permission denied
Python:pip における管理者権限と user install