IT Learning

実践形式でITのお勉強

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
----------------
Successfully built pings
Installing collected packages: pings
Successfully installed pings-0.0.1

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

Step2 : pingsの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は既に無くなっているらしい。

参考サイト:

https://stackoverflow.com/questions/58569361/attributeerror-module-time-has-no-attribute-clock-in-python-3-8

エラー対処方法

エラーを解消すべく、time.clockを使用している箇所を手動で修正することにしました。

~\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 : pings動作確認

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 m

上記の通り、pythonからpingを通すことができました。

まとめ

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

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

Related

-Python

執筆者:


comment

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