Python3.x系のrequestsモジュールをインストール

Pythonの勉強でrequestsモジュールをインストール。
モジュールがなくてもできるようだが、このモジュールを入れれば楽にHTTPリクエストを送れるらしい。やってみよう。


ググって下記を参考にしてみた。
 https://weblike-curtaincall.ssl-lolipop.jp/blog/?p=1546

# python3 -m easy_install pip
Searching for pip
Best match: pip 7.1.0
Adding pip 7.1.0 to easy-install.pth file
Installing pip3 script to /usr/bin
Installing pip script to /usr/bin
Installing pip3.4 script to /usr/bin

Using /usr/lib/python3.4/site-packages
Processing dependencies for pip
Finished processing dependencies for pip

次に下記を実行した所でうまくいかなかった。

# pip install requests
Traceback (most recent call last):
  File "/usr/local/bin/pip", line 7, in <module>
    from pip._internal import main
ImportError: No module named _internal

「ImportError: No module named _internal」。「_internal」というモジュールが内というエラーなのか?
更にググると下記がヒット。
https://qastack.jp/ubuntu/1025189/pip-is-not-working-importerror-no-module-named-pip-internal

pipのバージョンの問題なのだろうか。CentOS6環境なので、Python2.6.6環境にPython3.4を入れて共存しているが・・・。試しに下記を投入。

# pip3 install requests
You are using pip version 7.1.0, however version 20.0.2 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.
Requirement already satisfied (use --upgrade to upgrade): requests in /usr/lib/python3.4/site-packages
Requirement already satisfied (use --upgrade to upgrade): urllib3>=1.21.1 in /usr/lib/python3.4/site-packages (from requests)

pipのバージョンも関係しているようだ。/usr/bin/pipをみてみると何かバージョン違いが一杯あるように見える・・・

# /usr/bin/pip
pip     pip2    pip2.6  pip3    pip3.4  

というわけで下記で挑戦。

# pip3.4 install requests
You are using pip version 7.1.0, however version 20.0.2 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.
Requirement already satisfie install requests
You are using pip version 7.1.0, however version 20.0.2 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.
Requirement already satisfied (use --upgrade to upgrade): requests in /usr/lib/python3.4/site-packages
Requirement already satisfied (usehttps://qastack.jp/ubuntu/1025189/pip-is-not-working-importerror-no-module-named-pip-internal --upgrade to upgrade): urllib3>=1.21.1 in /usr/lib/python3.4/site-packages (from requests)

何やらpipのバージョンが今は7.1.0だが20.0.2が使えると出ている。そこで指示にしたがって下記を実行。

#pip3.4 install --upgrade pip
You are using pip version 7.1.0, however version 20.0.2 is available.
You should consider upgCollecting pip
Downloading https://files.pythonhosted.org/packages/54/0c/d01aa759fdc501a58f431eb594a17495f15b88da142ce14b5845662c13f3/pip-20.0.2-py2.py3-none-any.whl (1.4MB)
100% |████████████████████████████████| 1.4MB 385kB/s
Installing collected packages: pip
Found existing installation: pip 7.1.0
Uninstalling pip-7.1.0:
Successfully uninstalled pip-7.1.0
Successfully installed pip-20.0.2he 'pip install --upgrade pip' command.
Requirement already satisfied (use --upgrade to upgrade): requests in /usr/lib/rading via the 'pip install --upgrade pip' command.
Collecting pip
Downloading https://files.pythonhosted.org/packages/54/0c/d01aa759fdc501a58f431eb594a17495f15b88da142ce14b5845662c13f3/pip-20.0.2-py2.py3-none-any.whl (1.4MB)
100% |████████████████████████████████| 1.4MB 385kB/s
Installing collected packages: pip
Found existing installation: pip 7.1.0
Uninstalling pip-7.1.0:
Successfully uninstalled pip-7.1.0
Successfully installed pip-20.0.2

「Successfully installed pip-20.0.2」と表示されている。どうやらうまくいったようだ。
そこで本命のrequestsモジュールをインストール。

#  /usr/bin/pip3.4 intall requests
Traceback (most recent call last):
  File "/usr/bin/pip3.4", line 7, in <module>
    from pip._internal.cli.main import main
  File "/usr/lib/python3.4/site-packages/pip/_internal/cli/main.py", line 10, in <module>
    from pip._internal.cli.autocompletion import autocomplete
  File "/usr/lib/python3.4/site-packages/pip/_internal/cli/autocompletion.py", line 9, in <module>
    from pip._internal.cli.main_parser import create_main_parser
  File "/usr/lib/python3.4/site-packages/pip/_internal/cli/main_parser.py", line 7, in <module>
    from pip._internal.cli import cmdoptions
  File "/usr/lib/python3.4/site-packages/pip/_internal/cli/cmdoptions.py", line 28, in <module>
    from pip._internal.models.target_python import TargetPython
  File "/usr/lib/python3.4/site-packages/pip/_internal/models/target_python.py", line 4, in <module>
    from pip._internal.utils.misc import normalize_version_info
  File "/usr/lib/python3.4/site-packages/pip/_internal/utils/misc.py", line 20, in <module>
    from pip._vendor import pkg_resources
  File "/usr/lib/python3.4/site-packages/pip/_vendor/pkg_resources/__init__.py", line 92, in <module>
    raise RuntimeError("Python 3.5 or later is required")
RuntimeError: Python 3.5 or later is required#  /usr/bin/pip3.4 intall requests
Traceback (most recent call last):
  File "/usr/bin/pip3.4", line 7, in <module>
    from pip._internal.cli.main import main
  File "/usr/lib/python3.4/site-packages/pip/_internal/cli/main.py", line 10, in <module>
    from pip._internal.cli.autocompletion import autocomplete
  File "/usr/lib/python3.4/site-packages/pip/_internal/cli/autocompletion.py", line 9, in <module>
    from pip._internal.cli.main_parser import create_main_parser
  File "/usr/lib/python3.4/site-packages/pip/_internal/cli/main_parser.py", line 7, in <module>
    from pip._internal.cli import cmdoptions
  File "/usr/lib/python3.4/site-packages/pip/_internal/cli/cmdoptions.py", line 28, in <module>
    from pip._internal.models.target_python import TargetPython
  File "/usr/lib/python3.4/site-packages/pip/_internal/models/target_python.py", line 4, in <module>
    from pip._internal.utils.misc import normalize_version_info
  File "/usr/lib/python3.4/site-packages/pip/_internal/utils/misc.py", line 20, in <module>
    from pip._vendor import pkg_resources
  File "/usr/lib/python3.4/site-packages/pip/_vendor/pkg_resources/__init__.py", line 92, in <module>
    raise RuntimeError("Python 3.5 or later is required")
RuntimeError: Python 3.5 or later is required

python3.5以降が必要とか言われる・・・(T_T)
こちらの環境は3.4台なのに・・・先ほどのpipをバージョンアップした影響なのだろうか。というわけでまだ問題は解消せず・・・そこで先日の記事にしたがって下記を投入してPython3.5にしてしまうと3.5にできたようだ。

# yum install -y python35*
読み込んだプラグイン:fastestmirror, refresh-packagekit, security
インストール処理の設定をしています
Loading mirror speeds from cached hostfile
 * centos-sclo-rh: ty1.mirror.newmediaexpress.com
 * centos-sclo-sclo: ty1.mirror.newmediaexpress.com
 * epel: nrt.edge.kernel.org
 * livna: wftp.tu-chemnitz.de
 * nux-dextop: mirror.li.nux.ro
https://yum.dockerproject.org/repo/main/centos/6/repodata/repomd.xml: [Errno 14] PYCURL ERROR 22 - "The requested URL returned error: 404 Not Found"
他のミラーを試します。
To address this issue please refer to the below wiki article 

https://wiki.centos.org/yum-errors

If above article doesn't help to resolve this issue please use https://bugs.centos.org/.

依存性の解決をしています
--> トランザクションの確認を実行しています。
---> Package python35u.x86_64 0:3.5.6-1.ius.el6 will be インストール
---> Package python35u-debug.x86_64 0:3.5.6-1.ius.el6 will be インストール
---> Package python35u-devel.x86_64 0:3.5.6-1.ius.el6 will be インストール
---> Package python35u-hiredis.x86_64 0:0.2.0-1.ius.el6 will be インストール
---> Package python35u-libs.x86_64 0:3.5.6-1.ius.el6 will be インストール
---> Package python35u-lxml.x86_64 0:4.2.0-1.ius.el6 will be インストール
---> Package python35u-mod_wsgi.x86_64 0:4.6.2-1.ius.el6 will be インストール
---> Package python35u-pip.noarch 0:9.0.1-1.ius.el6 will be インストール
---> Package python35u-postgresql.x86_64 0:1.2.1-1.ius.el6 will be インストール
---> Package python35u-redis.noarch 0:2.10.6-1.ius.el6 will be インストール
---> Package python35u-setuptools.noarch 0:39.0.1-1.ius.el6 will be インストール
---> Package python35u-test.x86_64 0:3.5.6-1.ius.el6 will be インストール
---> Package python35u-tkinter.x86_64 0:3.5.6-1.ius.el6 will be インストール
---> Package python35u-tools.x86_64 0:3.5.6-1.ius.el6 will be インストール
--> 依存性解決を終了しました。

依存性を解決しました

================================================================================
 パッケージ                 アーキテクチャ
                                         バージョン             リポジトリー
                                                                           容量
================================================================================
インストールしています:
 python35u                  x86_64       3.5.6-1.ius.el6        ius        51 k
 python35u-debug            x86_64       3.5.6-1.ius.el6        ius       2.4 M
 python35u-devel            x86_64       3.5.6-1.ius.el6        ius       191 k
 python35u-hiredis          x86_64       0.2.0-1.ius.el6        ius        20 k
 python35u-libs             x86_64       3.5.6-1.ius.el6        ius       9.3 M
 python35u-lxml             x86_64       4.2.0-1.ius.el6        ius       1.3 M
 python35u-mod_wsgi         x86_64       4.6.2-1.ius.el6        ius       1.8 M
 python35u-pip              noarch       9.0.1-1.ius.el6        ius       1.8 M
 python35u-postgresql       x86_64       1.2.1-1.ius.el6        ius       474 k
 python35u-redis            noarch       2.10.6-1.ius.el6       ius       114 k
 python35u-setuptools       noarch       39.0.1-1.ius.el6       ius       781 k
 python35u-test             x86_64       3.5.6-1.ius.el6        ius       7.1 M
 python35u-tkinter          x86_64       3.5.6-1.ius.el6        ius       358 k
 python35u-tools            x86_64       3.5.6-1.ius.el6        ius       463 k

トランザクションの要約
================================================================================
インストール        14 パッケージ

総ダウンロード容量: 26 M
インストール済み容量: 146 M
パッケージをダウンロードしています:
(1/14): python35u-3.5.6-1.ius.el6.x86_64.rpm             |  51 kB     00:00     
(2/14): python35u-debug-3.5.6-1.ius.el6.x86_64.rpm       | 2.4 MB     00:01     
(3/14): python35u-devel-3.5.6-1.ius.el6.x86_64.rpm       | 191 kB     00:00     
(4/14): python35u-hiredis-0.2.0-1.ius.el6.x86_64.rpm     |  20 kB     00:00     
(5/14): python35u-libs-3.5.6-1.ius.el6.x86_64.rpm        | 9.3 MB     00:02     
(6/14): python35u-lxml-4.2.0-1.ius.el6.x86_64.rpm        | 1.3 MB     00:01     
(7/14): python35u-mod_wsgi-4.6.2-1.ius.el6.x86_64.rpm    | 1.8 MB     00:01     
(8/14): python35u-pip-9.0.1-1.ius.el6.noarch.rpm         | 1.8 MB     00:00     
(9/14): python35u-postgresql-1.2.1-1.ius.el6.x86_64.rpm  | 474 kB     00:00     
(10/14): python35u-redis-2.10.6-1.ius.el6.noarch.rpm     | 114 kB     00:00     
(11/14): python35u-setuptools-39.0.1-1.ius.el6.noarch.rp | 781 kB     00:00     
(12/14): python35u-test-3.5.6-1.ius.el6.x86_64.rpm       | 7.1 MB     00:04     
(13/14): python35u-tkinter-3.5.6-1.ius.el6.x86_64.rpm    | 358 kB     00:00     
(14/14): python35u-tools-3.5.6-1.ius.el6.x86_64.rpm      | 463 kB     00:00     
--------------------------------------------------------------------------------
合計                                            1.9 MB/s |  26 MB     00:14     
rpm_check_debug を実行しています
トランザクションのテストを実行しています
トランザクションのテストを成功しました
トランザクションを実行しています
  インストールしています  : python35u-3.5.6-1.ius.el6.x86_64               1/14 
  インストールしています  : python35u-libs-3.5.6-1.ius.el6.x86_64          2/14 
  インストールしています  : python35u-tkinter-3.5.6-1.ius.el6.x86_64       3/14 
  インストールしています  : python35u-tools-3.5.6-1.ius.el6.x86_64         4/14 
  インストールしています  : python35u-setuptools-39.0.1-1.ius.el6.noarc    5/14 
  インストールしています  : python35u-test-3.5.6-1.ius.el6.x86_64          6/14 
  インストールしています  : python35u-devel-3.5.6-1.ius.el6.x86_64         7/14 
  インストールしています  : python35u-debug-3.5.6-1.ius.el6.x86_64         8/14 
  インストールしています  : python35u-pip-9.0.1-1.ius.el6.noarch           9/14 
  インストールしています  : python35u-mod_wsgi-4.6.2-1.ius.el6.x86_64     10/14 
  インストールしています  : python35u-postgresql-1.2.1-1.ius.el6.x86_64   11/14 
  インストールしています  : python35u-hiredis-0.2.0-1.ius.el6.x86_64      12/14 
  インストールしています  : python35u-lxml-4.2.0-1.ius.el6.x86_64         13/14 
  インストールしています  : python35u-redis-2.10.6-1.ius.el6.noarch       14/14 
  Verifying               : python35u-devel-3.5.6-1.ius.el6.x86_64         1/14 
  Verifying               : python35u-tools-3.5.6-1.ius.el6.x86_64         2/14 
  Verifying               : python35u-postgresql-1.2.1-1.ius.el6.x86_64    3/14 
  Verifying               : python35u-pip-9.0.1-1.ius.el6.noarch           4/14 
  Verifying               : python35u-hiredis-0.2.0-1.ius.el6.x86_64       5/14 
  Verifying               : python35u-libs-3.5.6-1.ius.el6.x86_64          6/14 
  Verifying               : python35u-test-3.5.6-1.ius.el6.x86_64          7/14 
  Verifying               : python35u-setuptools-39.0.1-1.ius.el6.noarc    8/14 
  Verifying               : python35u-debug-3.5.6-1.ius.el6.x86_64         9/14 
  Verifying               : python35u-tkinter-3.5.6-1.ius.el6.x86_64      10/14 
  Verifying               : python35u-3.5.6-1.ius.el6.x86_64              11/14 
  Verifying               : python35u-redis-2.10.6-1.ius.el6.noarch       12/14 
  Verifying               : python35u-mod_wsgi-4.6.2-1.ius.el6.x86_64     13/14 
  Verifying               : python35u-lxml-4.2.0-1.ius.el6.x86_64         14/14 

インストール:
  python35u.x86_64 0:3.5.6-1.ius.el6                                            
  python35u-debug.x86_64 0:3.5.6-1.ius.el6                      #pip3.4 install --upgrade pip
You are using pip version 7.1.0, however version 20.0.2 is available.
You should consider upgCollecting pip
Downloading https://files.pythonhosted.org/packages/54/0c/d01aa759fdc501a58f431eb594a17495f15b88da142ce14b5845662c13f3/pip-20.0.2-py2.py3-none-any.whl (1.4MB)
100% |████████████████████████████████| 1.4MB 385kB/s
Installing collected packages: pip
Found existing installation: pip 7.1.0
Uninstalling pip-7.1.0:#pip3.4 install --upgrade pip
You are using pip version 7.1.0, however version 20.0.2 is available.
You should consider upgCollecting pip
Downloading https://files.pythonhosted.org/packages/54/0c/d01aa759fdc501a58f431eb594a17495f15b88da142ce14b5845662c13f3/pip-20.0.2-py2.py3-none-any.whl (1.4MB)
100% |████████████████████████████████| 1.4MB 385kB/s
Installing collected packages: pip
Found existing installation: pip 7.1.0
Uninstalling pip-7.1.0:
Successfully uninstalled pip-7.1.0
Successfully installed pip-20.0.2he 'pip install --upgrade pip' command.
Requirement already satisfied (use --upgrade to upgrade): requests in /usr/lib/rading via the 'pip install --upgrade pip' command.
Collecting pip
Downloading https://files.pythonhosted.org/packages/54/0c/d01aa759fdc501a58f431eb594a17495f15b88da142ce14b5845662c13f3/pip-20.0.2-py2.py3-none-any.whl (1.4MB)
100% |████████████████████████████████| 1.4MB 385kB/s
Installing collected packages: pip
Found existing installation: pip 7.1.0
Uninstalling pip-7.1.0:
Successfully uninstalled pip-7.1.0
Successfully installed pip-20.0.2
Successfully uninstalled pip-7.1.0
Successfully installed pip-20.0.2he 'pip install --upgrade pip' command.
Requirement already satisfied (use --upgrade to upgrade): requests in /usr/lib/rading via the 'pip install --upgrade pip' command.
Collecting pip
Downloading https://files.pythonhosted.org/packages/54/0c/d01aa759fdc501a58f431eb594a17495f15b88da142ce14b5845662c13f3/pip-20.0.2-py2.py3-none-any.whl (1.4MB)
100% |████████████████████████████████| 1.4MB 385kB/s
Installing collected packages: pip
Found existing installation: pip 7.1.0
Uninstalling pip-7.1.0:
Successfully uninstalled pip-7.1.0
Successfully installed pip-20.0.2                
  python35u-devel.x86_64 0:3.5.6-1.ius.el6                                      
  python35u-hiredis.x86_64 0:0.2.0-1.ius.el6                                    
  python35u-libs.x86_64 0:3.5.6-1.ius.el6                                       
  python35u-lxml.x86_64 0:4.2.0-1.ius.el6                                       
  python35u-mod_wsgi.x86_64 0:4.6.2-1.ius.el6                                   
  python35u-pip.noarch 0:9.0.1-1.ius.el6                                        
  python35u-postgresql.x86_64 0:1.2.1-1.ius.el6                                 
  python35u-redis.noarch 0:2.10.6-1.ius.el6                                     
  python35u-setuptools.noarch 0:39.0.1-1.ius.el6                                
  python35u-test.x86_64 0:3.5.6-1.ius.el6                                       
  python35u-tkinter.x86_64 0:3.5.6-1.ius.el6                                    
  python35u-tools.x86_64 0:3.5.6-1.ius.el6                                      

完了しました!

今渡こそ!

# pip3.5 install requests
Collecting requests
  Downloading https://files.pythonhosted.org/packages/1a/70/1935c770cb3be6e3a8b78ced23d7e0f3b187f5cbfab4749523ed65d7c9b1/requests-2.23.0-py2.py3-none-any.whl (58kB)
    100% |████████████████████████████████| 61kB 6.0MB/s 
Collecting urllib3!=1.25.0,!=1.25.1,<1.26,>=1.21.1 (from requests)
  Downloading https://files.pythonhosted.org/packages/e8/74/6e4f91745020f967d09332bb2b8b9b10090957334692eb88ea4afe91b77f/urllib3-1.25.8-py2.py3-none-any.whl (125kB)
    100% |████████████████████████████████| 133kB 5.1MB/s 
Collecting chardet<4,>=3.0.2 (from requests)
  Downloading https://files.pythonhosted.org/packages/bc/a9/01ffebfb562e4274b6487b4bb1ddec7ca55ec7510b22e4c51f14098443b8/chardet-3.0.4-py2.py3-none-any.whl (133kB)
    100% |████████████████████████████████| 143kB 5.4MB/s 
Collecting idna<3,>=2.5 (from requests)
  Downloading https://files.pythonhosted.org/packages/89/e3/afebe61c546d18fb1709a61bee788254b40e736cff7271c7de5de2dc4128/idna-2.9-py2.py3-none-any.whl (58kB)
    100% |████████████████████████████████| 61kB 8.3MB/s 
Collecting certifi>=2017.4.17 (from requests)
  Downloading https://files.pythonhosted.org/packages/b9/63/df50cac98ea0d5b006c55a399c3bf1db9da7b5a24de7890bc9cfd5dd9e99/certifi-2019.11.28-py2.py3-none-any.whl (156kB)
    100% |████████████████████████████████| 163kB 3.0MB/s 
Installing collected packages: urllib3, chardet, idna, certifi, requests
Successfully installed certifi-2019.11.28 chardet-3.0.4 idna-2.9 requests-2.23.0 urllib3-1.25.8
You are using pip version 9.0.1, however version 20.0.2 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.

またpipのバージョン違いなのか?下記を投入。

# pip3.5 install --upgrade pip
Collecting pip
  Using cached https://files.pythonhosted.org/packages/54/0c/d01aa759fdc501a58f431eb594a17495f15b88da142ce14b5845662c13f3/pip-20.0.2-py2.py3-none-any.whl
Installing collected packages: pip
  Found existing installation: pip 9.0.1
    Uninstalling pip-9.0.1:
      Successfully uninstalled pip-9.0.1
Successfully installed pip-20.0.2

pipのバージョンは問題ないようだ。それでは、いよいよ・・・

#pip3.5 install requests
Requirement already satisfied: requests in /usr/lib/python3.5/site-packages (2.23.0)
Requirement already satisfied: certifi>=2017.4.17 in /usr/lib/python3.5/site-packages (from requests) (2019.11.28)
Requirement already satisfied: idna<3,>=2.5 in /usr/lib/python3.5/site-packages (from requests) (2.9)
Requirement already satisfied: chardet<4,>=3.0.2 in /usr/lib/python3.5/site-packages (from requests) (3.0.4)
Requirement already satisfied: urllib3!=1.25.0,!=1.25.1,<1.26,>=1.21.1 in /usr/lib/python3.5/site-packages (from requests) (1.25.8)

おっ、エラーが出ない。うまくいったのか?
確認してみよう。まずはtest.pyを作成。

import requests

response = requests.get('http://www.mlit.go.jp')
print(response.status_code)    # HTTPのステータスコード取得
print(response.text)    # レスポンスのHTMLを文字列で取得

下記を実行。うまく表示されました(^^)v

# /usr/bin/python3.5 test.py