22

On 3 machines I get:

$ 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: ''

I have tested one of these machines on two different internet connections with the same result.

Why is it not working?

5

8 Answers 8

28

From this speedtest-cli Pull Request, I gather the speedtest site have changed something in the response their API gives out. Looking at the first commit in the PR, you just need to modify a single line in speedtest.py.

If you're in Ubuntu or similar, and you have the file in the location shown in your output, you can fix it with:

## 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

EDIT: the final patch is at https://github.com/sivel/speedtest-cli/commit/cadc68, and published in v2.1.3. It's too complex for a simple one-line sed command, but you could still apply it yourself manually. Or you could try downloading that version of the speedtest.py file yourself:

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

(Again, you should double-check the location of the speedtest.py file. The above location seems to be common for Ubuntu, but not across all versions of Unix/Linux.)

6
  • 3
    This patch was publish in v2.1.3, tagged "9 days ago" Commented Apr 17, 2021 at 14:22
  • 1
    @SteveAlmond Thanks, I've added a link in my answer.
    – mwfearnley
    Commented Apr 18, 2021 at 13:32
  • thanks, your sed worked for me, fixed on ubuntu !
    – neofutur
    Commented May 17, 2021 at 11:11
  • Applying the patch gives ImportError: module 'speedtest' has no attribute 'main' Commented Jul 15, 2021 at 15:09
  • 1
    Good fix. My paths are different for FreeBSD, which isn't surprising. Thank you.
    – pboin
    Commented Feb 4, 2022 at 16:05
5

I got mine working by using these 2 commands:

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

This problem can be solved by:

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
0

@mwfearnley your solution worked, thanks! Sometimes speedtest might be installed under a different location so maybe run the following instead:

sudo wget https://raw.githubusercontent.com/sivel/speedtest-cli/v2.1.3/speedtest.py -O $(which speedtest) 
1
  • Glad you found it helpful! Note that /usr/bin/speedtest may not typically be the speedtest.py file itself, but a sort of entry point into it. (You can see similar scripts with grep EASY-INSTALL-ENTRY-SCRIPT /usr/bin/*)
    – mwfearnley
    Commented May 5, 2021 at 8:16
0

I was using it on Raspbian (Raspberry Pi) and in my case I was confusing the site-packages of the python installation of the user pi and root (sudo). This command was fine:

$ speedtest-cli --simple

But

$ sudo speedtest-cli --simple

always crashed. This was because there was version speedtest-cli-2.1.3 for user pi and speedtest-cli-2.1.2 for root.

Since I was using the commands in a cron job, the command was always run with root and crashed. To overcome this I had to upgrade the package explicitly:

$ sudo pip install --upgrade speedtest-cli

Maybe this also fits for someone else.

0

My solution

sudo apt remove speedtest-cli
sudo pip install --upgrade speedtest-cli
0

If you are using the Python speediest-cli just uninstall and reinstall it:

pip uninstall speedtest-cli

then

pip install speedtest-cli
0

speedtest-cli can just be downloaded and run from any local folder. This is how to download the latest version from master and run it:

wget https://github.com/sivel/speedtest-cli/raw/master/speedtest.py
python speedtest.py

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .