〜 卓越した品質へ 〜

OpenSSLをRUBYで使うのは割と簡単です。普通に[require ‘openssl’]と書けば使えるようになりますから。Pythonでも同じかと思ったらそうでもなく,pyOpenSSLというパッケージをインストールする必要があるみたいです。そこでpyOpenSSLをWindows10にインストールしてみました。

インストールに利用したWindows10にはPython3.5とOpenSSL 1.0.2gが入っています。
OpenSSLなどをはじめ,オープンソースプロジェクトの場合,Windows用のインストーラパッケージを提供していることが多いのですが,pyOpenSSLの場合は,Python3.5に対応したインストーラパッケージは存在しませんでした。(ひょっとしたらあるのかもしれませんが,私が検索した範囲では見つけられませんでした)

ちなみに,Python3.2までベースのpyOpenSSLのインストーラパッケージはこちらにありました。
https://pypi.python.org/pypi/pyOpenSSL/0.13.1
2016年5月5日現在のpyOpenSSLのバージョンは16.0.0なので少し古いかもしれません。0.13.1のWindowsインストーラパッケージがリリースされたのが,2013年9月4日です。2年半で0.13から16.0まで進化するとも思えないので,リリースノートを見てみました。

2015年4月14日に0.15がリリースされていて,その次が16.0ですので,先頭のゼロを取ってしまったようです。詳しい経緯は知りませんが。。。

どうせなら最新版のインストールにチャレンジしようということで,やってみました。

1.pyOnenSSLを入手する
 pyOpenSSLのサイトhttps://pypi.python.org/pypi/pyOpenSSL/16.0.0からソース一式をダウンロードしてきます。

2.ReadMeを読む
 Pythonのラッパーモジュールを利用するのは初めてなので,一応ReadMeを読んでみました。pyOpenSSLを解凍したフォルダに「README.rst」や「INSTALL.rst」があります。
 これを読むと,pyOpenSSLをインストールするには,次のコマンドを実行するように書いています。

$ pip install pyopenssl

pipはPythonのパッケージ管理システムで,Pythonをインストールすると,自動的に入るみたいです。実際にコマンドプロンプトで[pip]と入力すると,こんな感じでusage画面が出力されます。

> pip
Usage:
  pip <command> [options]

Commands:
  install                     Install packages.
  uninstall                   Uninstall packages.
  freeze                      Output installed packages in requirements format.
  list                        List installed packages.
  show                        Show information about installed packages.
  search                      Search PyPI for packages.
  wheel                       Build wheels from your requirements.
  help                        Show help for commands.

General Options:
  -h, --help                  Show help.
  --isolated                  Run pip in an isolated mode, ignoring
                              environment variables and user configuration.
  -v, --verbose               Give more output. Option is additive, and can be
                              used up to 3 times.
  -V, --version               Show version and exit.
  -q, --quiet                 Give less output.
  --log <path>                Path to a verbose appending log.
  --proxy <proxy>             Specify a proxy in the form
                              [user:passwd@]proxy.server:port.
  --retries <retries>         Maximum number of retries each connection should
                              attempt (default 5 times).
  --timeout <sec>             Set the socket timeout (default 15 seconds).
  --exists-action <action>    Default action when a path already exists:
                              (s)witch, (i)gnore, (w)ipe, (b)ackup.
  --trusted-host <hostname>   Mark this host as trusted, even though it does
                              not have valid or any HTTPS.
  --cert <path>               Path to alternate CA bundle.
  --client-cert <path>        Path to SSL client certificate, a single file
                              containing the private key and the certificate
                              in PEM format.
  --cache-dir <dir>           Store the cache data in <dir>.
  --no-cache-dir              Disable the cache.
  --disable-pip-version-check
                              Don't periodically check PyPI to determine
                              whether a new version of pip is available for
                              download. Implied with --no-index.

3.インストールする
 それではpipコマンドを入力してpyOpenSSLをインストールしてみます。

C:\Users\hogehoge>pip install pyopenssl
Collecting pyopenssl
  Downloading pyOpenSSL-16.0.0-py2.py3-none-any.whl (45kB)
    100% |################################| 45kB 485kB/s
Collecting six>=1.5.2 (from pyopenssl)
  Downloading six-1.10.0-py2.py3-none-any.whl
Collecting cryptography>=1.3 (from pyopenssl)
  Downloading cryptography-1.3.2-cp35-none-win32.whl (891kB)
    100% |################################| 892kB 222kB/s
Collecting pyasn1>=0.1.8 (from cryptography>=1.3->pyopenssl)
  Downloading pyasn1-0.1.9-py2.py3-none-any.whl
Requirement already satisfied (use --upgrade to upgrade): setuptools>=11.3 in c:\users\hogehoge\appdata\local\programs\python\python35-32\lib\site-packages (from cryptography>=1.3->pyopenssl)
Collecting idna>=2.0 (from cryptography>=1.3->pyopenssl)
  Downloading idna-2.1-py2.py3-none-any.whl (54kB)
    100% |################################| 57kB 353kB/s
Collecting cffi>=1.4.1 (from cryptography>=1.3->pyopenssl)
  Downloading cffi-1.6.0-cp35-none-win32.whl (145kB)
    100% |################################| 147kB 409kB/s
Collecting pycparser (from cffi>=1.4.1->cryptography>=1.3->pyopenssl)
  Downloading pycparser-2.14.tar.gz (223kB)
    100% |################################| 225kB 406kB/s
Installing collected packages: six, pyasn1, idna, pycparser, cffi, cryptography, pyopenssl
  Running setup.py install for pycparser
Successfully installed cffi-1.6.0 cryptography-1.3.2 idna-2.1 pyasn1-0.1.9 pycparser-2.14 pyopenssl-16.0.0 six-1.10.0
You are using pip version 7.1.2, however version 8.1.1 is available.
You should consider upgrading via the 'python -m pip install --upgrade pip' command.

うまくインストールできたようです。画面の最後に,pipのバージョンが古いと警告が出ていたので,ついでにバージョンアップしました。

4.pyOpenSSLの動作を確認する
 無事にインストールできかどうか,pyOpenSSLをインポートして確認してみます。

>>> import OpenSSL
>>>

大成功!!

Pythonのモジュールはpipコマンドでインストールすることができます。オープンソースの場合,自分でビルドする必要があるなど,少しハードルが高いケースがありますが,今回はそんなに難しくありませんでした。

コメントを残す

メールアドレスが公開されることはありません。

This site uses Akismet to reduce spam. Learn how your comment data is processed.