OSX,pyenvでinstallしたanaconda環境で websocket_serverパッケージでwsサーバーを立てようとしたところこんな感じで怒られました。

Traceback (most recent call last):
  File "websocket.py", line XXX, in <module>
    server = WebsocketServer(8888, host='127.0.0.1',loglevel=logging.INFO)
TypeError: __init__() got an unexpected keyword argument 'loglevel'

原因はインストールしたパッケージが最新版ではなかったことです。
以下最新版に切り替えたメモ。

inspectパッケージでソースファイルのパスを取得

import inspect
from websocket_server import WebsocketServer
print(inspect.getsourcefile(WebsocketServer))

-----------------------
/Users/[username]/.pyenv/versions/anaconda3-2.5.0/lib/python3.5/site-packages/websocket_server/websocket_server.py

見てみると

    # ------------------------- Implementation -----------------------------

    class WebsocketServer(ThreadingMixIn, TCPServer, API):

        allow_reuse_address = True
        daemon_threads = True # comment to keep threads alive until finished

        '''
        clients is a list of dict:
            {
             'id'      : id,
             'handler' : handler,
             'address' : (addr, port)
            }
        '''
        clients=[]
        id_counter=0

        def __init__(self, port, host='127.0.0.1'):
                self.port=port
                TCPServer.__init__(self, (host, port), WebSocketHandler)

確かに、loglevelという引数は書かれていません。

はて・・。もう一度落ち着いてREADME.mdを読むと

You can use the project in three ways.

1.Copy/paste the websocket_server.py file in your project and use it directly
2.pip install git+https://github.com/Pithikos/python-websocket-server (latest code)
3.pip install websocket-server (might not be up-to-date)

pip install websocket-serverだと最新版じゃない可能性あるよ、と書いてました。

古いパッケージを消します。

$ pip uninstall websocket_server

最新版をインストールしなおします。

$ pip install git+https://github.com/Pithikos/python-websocket-server

OK!

コメントを残す

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