Pip 不适用于 Ubuntu 上的 Python 3.10

Chr*_*oco 121 python linux pip python-3.x

一般来说,我对使用 Ubuntu 和 Linux 很陌生。我只是尝试使用sudo apt-get install python3.10. 当我运行时,python3.10 -m pip install <library name>我总是收到以下错误:

Traceback (most recent call last):
  File "/usr/lib/python3.10/runpy.py", line 196, in _run_module_as_main
    return _run_code(code, main_globals, None,
  File "/usr/lib/python3.10/runpy.py", line 86, in _run_code
    exec(code, run_globals)
  File "/usr/lib/python3/dist-packages/pip/__main__.py", line 19, in <module>
    sys.exit(_main())
  File "/usr/lib/python3/dist-packages/pip/_internal/cli/main.py", line 73, in main
    command = create_command(cmd_name, isolated=("--isolated" in cmd_args))
  File "/usr/lib/python3/dist-packages/pip/_internal/commands/__init__.py", line 96, in create_command
    module = importlib.import_module(module_path)
  File "/usr/lib/python3.10/importlib/__init__.py", line 126, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 1050, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1027, in _find_and_load
  File "<frozen importlib._bootstrap>", line 1006, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 688, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 883, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "/usr/lib/python3/dist-packages/pip/_internal/commands/install.py", line 24, in <module>
    from pip._internal.cli.req_command import RequirementCommand
  File "/usr/lib/python3/dist-packages/pip/_internal/cli/req_command.py", line 15, in <module>
    from pip._internal.index.package_finder import PackageFinder
  File "/usr/lib/python3/dist-packages/pip/_internal/index/package_finder.py", line 21, in <module>
    from pip._internal.index.collector import parse_links
  File "/usr/lib/python3/dist-packages/pip/_internal/index/collector.py", line 12, in <module>
    from pip._vendor import html5lib, requests
ImportError: cannot import name 'html5lib' from 'pip._vendor' (/usr/lib/python3/dist-packages/pip/_vendor/__init__.py)```
Run Code Online (Sandbox Code Playgroud)

我尝试过执行 sudo apt-get install python3.10-html5lib 它下载了一些东西,但它没有修复错误。我应该如何修复这个错误?

nnn*_*nnn 205

这可能是由于系统太旧造成的pip

安装最新版本:
curl -sS https://bootstrap.pypa.io/get-pip.py | python3.10

和测试结果

python3.10 -m pip --version
Run Code Online (Sandbox Code Playgroud)

例如

pip 22.2.2 from <home>/.local/lib/python3.10/site-packages/pip (python 3.10)
Run Code Online (Sandbox Code Playgroud)

然后测试升级

python3.10 -m pip install --upgrade pip
Run Code Online (Sandbox Code Playgroud)

例如

python3.10 -m pip install --upgrade pip
Run Code Online (Sandbox Code Playgroud)

  • 在安装了“deadsnakes-ubuntu-ppa-focal.list”中的“python3.10”的“Ubuntu 20.04”上,我收到“ModuleNotFoundError:没有名为“distutils.cmd”的模块” (32认同)
  • 您可以从“deadsnakes”存储库中“apt install python${PYTHON_VERSION}-distutils”,但是当您使用“pip3.10”成功安装“numpy”时请告诉我。 (16认同)
  • 对于那些想知道此命令如何工作的人: **curl** 用于从给定链接下载文件 参数 -sS 表示 **s**(小 s)代表 **silent** 和 **S* *(大写 s)表示**显示错误**。Curl 将下载 **get-pip.py** 文件,其中包含一些 python 代码,然后我们将代码传递给 python3.10 命令,这样 python3.10 将运行 get-pip.py,这样最新版本的 pip 将被安装 (14认同)
  • ...并且不要按照[第一个谷歌搜索结果](https://computingforgeeks.com/how-to-install-python-on-debian-linux/)安装pip - `apt install python3-pip` ,从今天开始,它在“Ubuntu 20.04”上与 pip 一起安装“python3.8”。 (8认同)

小智 36

我已经尝试了上面所有的答案,但没有任何对我有用。我的python3版本是3.10.2。

所以我需要为pip安装合适的版本。

不过,我已经尝试过

curl -sS https://bootstrap.pypa.io/get-pip.py | python3.10
Run Code Online (Sandbox Code Playgroud)

但没有成功,所以我尝试了

curl https://bootstrap.pypa.io/get-pip.py | sudo python3
Run Code Online (Sandbox Code Playgroud)

这对我有用


Ben*_*ida 15

这是 @mirekphd 评论的扩展版本,它为我提供了一个在我的笔记本电脑和我们的服务器上都能完美运行的解决方案,不会弄乱任何东西。

第一步(如果尚未完成)是添加“deadsnakes”存储库,以便可以下载最新的 python 相关软件并保持更新。

sudo apt install software-properties-common -y
sudo add-apt-repository ppa:deadsnakes/ppa
Run Code Online (Sandbox Code Playgroud)

而且,如果您尚未安装 Python 3.10,您可以使用以下命令来完成此操作:

sudo apt install python3.10
Run Code Online (Sandbox Code Playgroud)

最后,要正常pip工作,您需要安装distutils与 3.10 兼容的软件包:

apt install python3.10-distutils
Run Code Online (Sandbox Code Playgroud)

之后您可以使用pip以下方式:

python3.10 -m pip _rest_of_the_pip
Run Code Online (Sandbox Code Playgroud)

上述内容是必要的,因为常规pip命令将使用系统默认的 python 版本而不是 3.10。

如果您pip经常使用,则可以向文件添加别名,.bashrc例如:

alias pip310='python3.10 -m pip'
Run Code Online (Sandbox Code Playgroud)

之后你就可以像这样使用它:

pip310 install blah
Run Code Online (Sandbox Code Playgroud)


Pho*_*x87 12

我在 GitHub Actions 中遇到过这个问题。我的解决方案是诉诸虚拟环境来与系统的其余部分隔离。确保python3.10-venv已安装,然后执行

python3.10 -m venv .venv
source .venv/bin/activate
pip install ...
...
deactivate
Run Code Online (Sandbox Code Playgroud)

  • 这应该是正确的答案。 (3认同)

Jer*_*ony 9

在 Ubuntu 18|20 中安装 python 3.10、pip 和 venv

sudo apt update && sudo apt upgrade -y
sudo apt install software-properties-common -y
sudo add-apt-repository ppa:deadsnakes/ppa
sudo apt install python3.10
python3.10 --version
curl -sS https://bootstrap.pypa.io/get-pip.py | python3.10
python3.10 -m pip --version
python3.10 -m pip install --upgrade pip
sudo apt install python3.10-venv
Run Code Online (Sandbox Code Playgroud)

创建虚拟环境,

python3.10 -m venv venv3.10
source venv3.10/bin/activate
Run Code Online (Sandbox Code Playgroud)


小智 1

在撰写本文时,如以下链接所述。Python 3.10 仍然不稳定。也许测试 python3.9 会发生什么情况并查看问题是否出在本地安装中是个好主意。
无论如何,通过运行(有sudo权限)从干净的 ubuntu (docker) 安装

apt-get install software-properties-common 
apt-get install python3.9
python3.9 --version
#
apt-get install python3.10
python3.10 --version
Run Code Online (Sandbox Code Playgroud)

我分别得到了答案Python 3.9.5bash: python3.10: command not found。所以我猜问题可能是在 python 3.10 存储库中......现在。

但是,apt-get install不会直接更新您的“默认”python。您可以检查哪些是您的安装

python --version
python3 --version
Run Code Online (Sandbox Code Playgroud)

无论如何,如果您仍然想安装 python3.10,也许上面的链接可以帮助您。