ERROR: Could not find a version that satisfies the requirement XXX (from versions: none) 的解决办法

2023-10-25
  1. 系统环境

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    eco$ neofetch                                     
    .-/+oossssoo+/-. eco@porum
    `:+ssssssssssssssssss+:` ------------------
    -+ssssssssssssssssssyyssss+- OS: Ubuntu 20.04.6 LTS x86_64
    .ossssssssssssssssssdMMMNysssso. Host: 90M2CTO1WW QiTianM428-N000
    /ssssssssssshdmmNNmmyNMMMMhssssss/ Kernel: 5.8.0-43-generic
    +ssssssssshmydMMMMMMMNddddyssssssss+ Uptime: 2 hours, 36 mins
    /sssssssshNMMMyhhyyyyhmNMMMNhssssssss/ Packages: 2315 (dpkg), 15 (snap)
    .ssssssssdMMMNhsssssssssshNMMMdssssssss. Shell: zsh 5.8
    +sssshhhyNMMNyssssssssssssyNMMMysssssss+ Resolution: 1920x1080, 1600x900
    ossyNMMMNyMMhsssssssssssssshmmmhssssssso DE: Unity
    ossyNMMMNyMMhsssssssssssssshmmmhssssssso WM: Mutter
    +sssshhhyNMMNyssssssssssssyNMMMysssssss+ WM Theme: Adwaita
    .ssssssssdMMMNhsssssssssshNMMMdssssssss. Theme: Yaru [GTK2/3]
    /sssssssshNMMMyhhyyyyhdNMMMNhssssssss/ Icons: ubuntu-mono-dark [GTK2/3]
    +sssssssssdmydMMMMMMMMddddyssssssss+ Terminal: HyperTerm
    /ssssssssssshdmNNNNmyNMMMMhssssss/ Terminal Font: Menlo
    .ossssssssssssssssssdMMMNysssso. CPU: Intel i5-9500 (6) @ 4.400GHz
    -+sssssssssssssssssyyyssss+- GPU: Intel UHD Graphics 630
    `:+ssssssssssssssssss+:` GPU: AMD ATI Radeon HD 8570 / R7 240/340 / Radeon 5
    .-/+oossssoo+/-. Memory: 4776MiB / 15905MiB



    eco$ python3 --version
    Python 3.8.10
    eco$ pip --version
    pip 20.0.2 from /usr/lib/python3/dist-packages/pip (python 3.8)
  2. 问题

    1
    2
    3
    eco$ pip install binder-trace
    ERROR: Could not find a version that satisfies the requirement binder-trace (from versions: none)
    ERROR: No matching distribution found for binder-trace
  3. 解决思路

    先在网上查了下这个错误,大部分都是说是源的问题,要换成国内的源balabala的,我寻思着之前其他的 package 都能下,怎么就这个不可以,应该不是源的问题。于是就去 https://pypi.org/ 手动下载该 package 到本地,再 pip install <localpath>

    1
    2
    3
    eco$ pip install ~/Downloads/binder_trace-1.1.2-py3-none-any.whl
    Processing ./Downloads/binder_trace-1.1.2-py3-none-any.whl
    ERROR: Package 'binder-trace' requires a different Python: 3.8.10 not in '>=3.9'

    这会儿提示很明确,是本机 python 版本太低导致的。

  4. 升级 python 版本

    1
    2
    sudo apt update
    sudo apt install python3.9

    安装完成后,python --version 会发现 python 版本还是 3.8。

    ls -l /usr/bin/python* 列出所有以 python 开头的文件:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    eco$ ls -l /usr/bin/python*
    lrwxrwxrwx 1 root root 9 3月 13 2020 /usr/bin/python2 -> python2.7
    -rwxr-xr-x 1 root root 3662032 7月 1 2022 /usr/bin/python2.7
    lrwxrwxrwx 1 root root 9 10月 7 09:05 /usr/bin/python3 -> python3.8
    -rwxr-xr-x 1 root root 5494584 5月 26 22:05 /usr/bin/python3.8
    lrwxrwxrwx 1 root root 33 5月 26 22:05 /usr/bin/python3.8-config -> x86_64-linux-gnu-python3.8-config
    -rwxr-xr-x 1 root root 5803968 11月 23 2021 /usr/bin/python3.9
    lrwxrwxrwx 1 root root 16 3月 13 2020 /usr/bin/python3-config -> python3.8-config
    -rwxr-xr-x 1 root root 384 1月 25 2023 /usr/bin/python3-futurize
    -rwxr-xr-x 1 root root 388 1月 25 2023 /usr/bin/python3-pasteurize

    可以发现此时的 python3 指向的还是 python3.8。

  5. 设置默认版本

    使用 update-alternatives 管理 linux 中软件版本的切换:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    eco$ sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.8 1
    update-alternatives: 使用 /usr/bin/python3.8 来在自动模式中提供 /usr/bin/python3 (python3)
    eco$ sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.9 2
    update-alternatives: 使用 /usr/bin/python3.9 来在自动模式中提供 /usr/bin/python3 (python3)
    eco$ sudo update-alternatives --config python3
    有 2 个候选项可用于替换 python3 (提供 /usr/bin/python3)。

    选择 路径 优先级 状态
    ------------------------------------------------------------
    * 0 /usr/bin/python3.9 2 自动模式
    1 /usr/bin/python3.8 1 手动模式
    2 /usr/bin/python3.9 2 手动模式

    要维持当前值[*]请按<回车键>,或者键入选择的编号:2
    eco$ python3 --version
    Python 3.9.5

    设置完成后,再次 pip install <package> 即可。

  6. 修复 Terminal 打不开

    当我们把 python 默认版本设置为 3.9 之后,会发现如果直接点击 terminal 是打不开的,但是在文件右键-在终端打开 还是可以打开的,这时我们先右键-在终端打开 打开 Terminal,然后 sudo gedit /usr/bin/gnome-terminal ,修改 #!/usr/bin/python3#!/usr/bin/python3.8 (修改成系统默认预装的 python 版本),保存即可。