Python

【Python】pingsライブラリでpingの疎通確認とAttributeError: module ‘time’ has no attribute ‘clock’への対処

投稿日:2021年5月31日 更新日:

概要

Pythonでサーバなどの死活監視をしたい、というのは一定の需要があると思います。subprocessを使用することで実現できるらしいですが、もっと簡単に使えるpingsというライブラリが公開されていましたので、こちらを使用してみました。
使用先:
https://github.com/satoshi03/pings

また、使用した中でAttributeErrorが発生したのでその対処法についても記録します。

環境

  • Windows10
  • Python 3.8.7

以下で作成した環境になります。

Step1 : pings ライブラリのインストール

PyPIで公開されていますのでpipでインストールできます。

pip install pings

結果

pings-0.0.1がインストールされました。

Successfully built pings
Installing collected packages: pings
Successfully installed pings-0.0.1

Step2 : ライブラリimport

早速pyhtonを起動してimport pingsをしてみます。

import pings

ここで以下のようなエラーが発生しました。

Traceback (most recent call last):				
  File "<stdin>", line 1, in <module>				
  File "C:\Users\<user_profile>\.venv\lib\site-packages\pings\__init__.py", line 3, in <module>				
    from .ping import *				
  File "C:\Users\<user_profile>\.venv\lib\site-packages\pings\ping.py", line 13, in <module>				
    timer = time.clock				
AttributeError: module 'time' has no attribute 'clock'				

エラーメッセージを見ると、ping.pyのtimer = time.clockにてclockメソッドがないよ、と言われています。

自分の環境はpython3.8ですが、調べるとどうやら3.8ではtime.clockは既に無くなっているらしい。

参考にしたURL:https://stackoverflow.com/questions/58569361/attributeerror-module-time-has-no-attribute-clock-in-python-3-8

エラー対処

ということで、~\site-packages\pingsping.pyを開き、該当箇所のtime.clockをtime.timeに変更してみました。

if sys.platform.startswith("win32"):
    #timer = time.clock
    timer = time.time
else:
    timer = time.time

これで再度import pingsしたところ、エラーが出なくなりました。ひとまずこれでOKと判断して、さっそくpingsを実際に使ってみます。

Step3 : ping確認

GiHubを参考にしてそのままテストしてみました。

>>> import pings
>>> p = pings.Ping()
>>> response = p.ping("google.com")
>>> response.is_reached()
True
>>> response.print_messages()
PING google.com (172.217.24.142): 55 data bytes
47 bytes from 172.217.24.142: icmp_seq=0 ttl=110 time=87.805 ms

動く、普通に動きました。

まとめ

pingsは非常に短くシンプルなコードでpingの疎通確認を行えるため非常に良いライブラリでした。
3.8環境でエラーが出ましたが、すぐに解決できたのであまり苦労せず使えました。

Pythonを基本から学ぶにはコチラがおすすめ

-Python

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

【Python】pandas dateframeで日時を日付と時間に分ける

Contents1 元データ2 日付と時刻にばらすコード 元データ このようなデータフレームがあり、日付と時刻にばらしたい場合の話。 import pandas as pd import dateti …

KerasからMNISTを取得して白黒表示するまで

Contents1 概要2 環境3 Step1 : MNISTの取得4 Step2 : MNISTを画像で表示5 Step3 : グレースケールで表示する6 参考)コード 概要 ディープラーニングの学 …

【Python】ベイズの定理を実際に試行して確認

Contents1 ベイズの定理とは2 具体的な問題3 Pythonで実際に確認 ベイズの定理とは ある事象について、その原因となる候補(互いに独立)がいくつかあり、それぞれの原因は発生確率を持ってい …

Python datetimeの基本的な使い方

Contents1 目的2 基本メソッド2.1 今日の取得2.2 年月日の取り出し2.3 明日の取得2.4 現在日時の取得3 現在時、分、秒、マイクロ秒の取り出し3.1 ISOフォーマットへの変換 目 …

Python smtplibでメール送信

Contents1 目的2 環境3 コード 目的 pythonからSMTPサーバにメールを送信する。 環境 Windows10Python 3.7.3 (Anaconda 4.7.10) コード # …

言語切り替え

カテゴリー