speedtest-cli:ValueError:デフォルトの10 int()の無効なリテラル: ''

speedtest-cli:ValueError:デフォルトの10 int()の無効なリテラル: ''

3台のコンピュータから以下を取得します。

$ speedtest-cli 
Retrieving speedtest.net configuration...
Traceback (most recent call last):
  File "/usr/bin/speedtest-cli", line 11, in <module>
    load_entry_point('speedtest-cli==2.1.2', 'console_scripts', 'speedtest-cli')()
  File "/usr/lib/python3/dist-packages/speedtest.py", line 1986, in main
    shell()
  File "/usr/lib/python3/dist-packages/speedtest.py", line 1872, in shell
    speedtest = Speedtest(
  File "/usr/lib/python3/dist-packages/speedtest.py", line 1091, in __init__
    self.get_config()
  File "/usr/lib/python3/dist-packages/speedtest.py", line 1173, in get_config
    ignore_servers = list(
ValueError: invalid literal for int() with base 10: ''

2つの異なるインターネット接続でコンピュータの1つをテストしましたが、同じ結果が出ました。

なぜ動作しないのですか?

答え1

このspeedtest-cliからフルリクエスト、スピードテストウェブサイトのAPIレスポンスで何かが変更されたことがわかりました。 PRの最初のコミットを見ると、speedtest.pyで1行だけ変更できます。

Ubuntuなどのシステムを使用していて、ファイルが出力に表示されている場所にある場合は、次のように問題を修正できます。

## Backup original code
sudo gzip -k9 /usr/lib/python3/dist-packages/speedtest.py

## Make the line substitution
sed -i "s/^            map(int, server_config\['ignoreids'\].split(','))$/            map(int, (server_config['ignoreids'].split(',') if len(server_config['ignoreids']) else []) )/" /usr/lib/python3/dist-packages/speedtest.py

編集:最終パッチは次の場所にあります。https://github.com/sivel/speedtest-cli/commit/cadc68、そして に掲示されるv2.1.3。単純な1行のsedコマンドは複雑すぎますが、手動で直接適用できます。または、そのバージョンのspeedtest.pyファイルを直接ダウンロードしてみることもできます。

sudo gzip -k9 /usr/lib/python3/dist-packages/speedtest.py

sudo wget https://raw.githubusercontent.com/sivel/speedtest-cli/v2.1.3/speedtest.py \
 -O /usr/lib/python3/dist-packages/speedtest.py

(もう一度speedtest.pyファイルの場所をもう一度確認する必要があります。上記の場所はUbuntuで一般的に見える場所ですが、Unix / Linuxのすべてのバージョンで表示されるわけではありません。)

答え2

次の2つのコマンドを使用して動作させました。

sudo apt install python-pip -y && sudo pip install speedtest-cli

答え3

この問題は次の方法で解決できます。

sudo gzip -k9 /usr/lib/python3/dist-packages/speedtest.py
sudo wget https://raw.githubusercontent.com/sivel/speedtest-cli/v2.1.3/speedtest.py -O /usr/lib/python3/dist-packages/speedtest.py

答え4

私はこれをRaspbian(Raspberry Pi)で使用しており、私の場合は、ユーザーのPythonインストールサイトパッケージを難読化しました。PIそして(スド)。このコマンドはうまく動作します。

$ speedtest-cli --simple

しかし、

$ sudo speedtest-cli --simple

常にクラッシュします。speedtest-cli-2.1.3ユーザーバージョンがあるからです。PIそしてspeedtest-cli-2.1.2根のために。

cronジョブはこのコマンドを使用しているため、コマンドは常にrootとして実行され、競合が発生します。この問題を克服するために、パッケージを明示的にアップグレードする必要がありました。

$ sudo pip install --upgrade speedtest-cli

おそらくこれは他の人にも効果があるでしょう。

関連情報