Pip 不适用于 Ubuntu 上的 Python 3.10
Posted
技术标签:
【中文标题】Pip 不适用于 Ubuntu 上的 Python 3.10【英文标题】:Pip is not working for Python 3.10 on Ubuntu 【发布时间】:2021-11-28 20:29:46 【问题描述】:我是一般使用 Ubuntu 和 Linux 的新手。我只是尝试使用sudo apt-get install python3.10
来更新 Python。当我运行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)```
我尝试过 sudo apt-get install python3.10-html5lib 它下载了一些东西,但它没有修复错误。我应该如何解决这个错误?
【问题讨论】:
重要的是要掌握在安装python
时,pip
不会自动安装。您必须单独安装模块,如in the answer by nnn
【参考方案1】:
这可能是系统pip
版本太旧造成的。
通过以下方式安装最新版本:curl -sS https://bootstrap.pypa.io/get-pip.py | python3.10
【讨论】:
在Ubuntu 20.04
上安装了来自deadsnakes-ubuntu-ppa-focal.list
的python3.10
,我得到ModuleNotFoundError: No module named 'distutils.cmd'
你可以从deadsnakes
repo 中apt install python$PYTHON_VERSION-distutils
,但是当你成功安装numpy
和pip3.10
时请告诉我。
@mirekphd 感谢您的提示,我将尝试使用 numpy - 附带信息:考虑使用“at 符号加用户”向我发送您的评论,以便我能意识到这一点。跨度>
对于那些想知道此命令如何工作的人:curl 用于从给定链接下载文件,参数 -sS 表示 s ( small s) 表示silent,S(大写的s)表示show error。 Curl 将下载包含一些 python 代码的 get-pip.py 文件,然后我们将代码传递给 python3.10 命令,这样 python3.10 将运行 get-pip.py 并且这样是最新版本的 pip 将被安装【参考方案2】:
我在 GitHub Actions 中遇到过这个问题。我的解决方案是借助虚拟环境与系统的其余部分隔离。确保 python3.10-venv
已安装,然后执行
python3.10 -m venv .venv
source .venv/bin/activate
pip install ...
...
deactivate
【讨论】:
这对我有用,谢谢!【参考方案3】:在撰写本文时,如以下link 所述。 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
我分别得到了Python 3.9.5
和bash: python3.10: command not found
的答案。所以我猜这个问题可能出在 python 3.10 存储库中......现在。
但是,apt-get install
不会直接更新您的“默认”python。您可以检查哪些是您的那些安装
python --version
python3 --version
无论如何,如果你还想安装python3.10,也许上面的链接可以帮助你。
【讨论】:
OP 已经安装了 python3.10,可能是在添加了像sudo add-apt-repository ppa:deadsnakes/ppa && sudo apt update
这样的第三方仓库之后【参考方案4】:
试试:
pip3.10 install <package name>
确保你拥有最新版本的 pip 和 python3.10
【讨论】:
最新的 pip 版本是 21.3.1。上面的命令你试过了吗?【参考方案5】:在装有 python 3.8 的 Ubuntu 上安装 python 3.10 后,我遇到了同样的错误。 卸载pip并重新安装
sudo apt-get remove -y python3-pip
sudo apt-get install -y python3-pip
它对我有用,但是 pip3.10 install modulename 得到了同样的错误,并且 python3.10 -m pip install modulename 工作正常。
【讨论】:
【参考方案6】:我在安装 pip 时也遇到了一些问题
由于sudo apt install python3-pip
仍然引用 pip3.8(至少在 mint Cinnamon 20.2 上),pip 需要以其他方式安装。
用curl -sS https://bootstrap.pypa.io/get-pip.py | python3.10
,原来是找不到pip
ImportError: 没有名为“pip._internal”的模块
我发现内置了 ensurepip 命令并针对 python3.10 的正确目录
运行 python3.10 -m ensurepip
会安装 setuptools 和 pip 并修复我丢失的 pip 模块。
之后可以使用 python3.10 -m pip install -U pip
升级 Pip。
它也适用于 sudo(有一些需要将 pip 作为 sudo 运行)
【讨论】:
显然ensurepip
在 Ubuntu/Debian 中不可用 (/usr/bin/python3.10: No module named ensurepip
)
没有任何线索:/ 我刚刚用我的 python3.10 确保 pip(来自 deadsnake ppa 的 DL),它修复了我的 pip 安装
AttributeError: module 'collections' has no attribute 'MutableMapping' 出错了。【参考方案7】:
为 Ubuntu 安装 python 和 pip 3.10 的代码都在那里,只需交换一行代码就足够了,在Dockerfile
中将基础映像更改为最新的 Ubuntu LTS 版本(即ubuntu:focal
)基于 Debian 的官方 python 3.10 镜像(我使用了python 3.10 bullseye slim Dockerfile。Docker 构建只用了 8 分钟,这证明了pip3.10
确实在那里工作:
$ docker run mirekphd/python3.10-ubuntu20.04 pip -V
输出:
pip 21.3.1 from /usr/local/lib/python3.10/site-packages/pip (python 3.10)
或者更高级的例子:
$ docker run -it --rm --name python3.10-ubuntu20.04 mirekphd/python3.10-ubuntu20.04:latest bash -c 'pip --version; pip install numpy --user --no-cache; pip show numpy; python -c "import numpy as np; print(np.ones(5))"'
输出:
pip 21.3.1 from /usr/local/lib/python3.10/site-packages/pip (python 3.10)
Collecting numpy
Downloading numpy-1.21.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (15.9 MB)
|████████████████████████████████| 15.9 MB 34.6 MB/s
Installing collected packages: numpy
WARNING: The scripts f2py, f2py3 and f2py3.10 are installed in '/root/.local/bin' which is not on PATH.
Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.
Successfully installed numpy-1.21.4
WARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv
Name: numpy
Version: 1.21.4
Summary: NumPy is the fundamental package for array computing with Python.
Home-page: https://www.numpy.org
Author: Travis E. Oliphant et al.
Author-email:
License: BSD
Location: /root/.local/lib/python3.10/site-packages
Requires:
Required-by:
[1. 1. 1. 1. 1.]
注意:要升级 pip,我只是添加了这一行(CMD
之前):
RUN python -m pip install --upgrade pip
【讨论】:
【参考方案8】:这是@mirekphd 评论的扩展版本,它为我提供了一个解决方案,可以在我的笔记本电脑和我们的服务器上完美运行,而不会搞砸任何事情。
第一步,如果尚未完成,则添加“deadsnakes”存储库,以便可以下载最新的 python 相关软件并保持更新。
sudo apt install software-properties-common -y
sudo add-apt-repository ppa:deadsnakes/ppa
而且,如果您还没有安装 Python 3.10,您可以这样做:
sudo apt install python3.10
最后,要使 pip
工作,您需要安装与 3.10 兼容的 distutils
软件包:
apt install python3.10-distutils
之后你可以通过以下方式使用pip
:
python3.10 -m pip _rest_of_the_pip
以上是必要的,因为常规的pip
命令将使用系统默认的python 版本,而不是3.10。
如果您经常使用pip
,那么您可以为您的.bashrc
文件添加一个别名,例如:
alias pip310='python3.10 -m pip'
之后你可以像这样使用它:
pip310 install blah
【讨论】:
【参考方案9】:我已经尝试了上述所有答案,但对我没有任何帮助。我的python3版本是3.10.2。
所以我需要为 pip 安装合适的版本。
不过,我试过了
curl -sS https://bootstrap.pypa.io/get-pip.py | python3.10
但是没用,我试过了
curl https://bootstrap.pypa.io/get-pip.py | Sudo python3
这对我有用
【讨论】:
以上是关于Pip 不适用于 Ubuntu 上的 Python 3.10的主要内容,如果未能解决你的问题,请参考以下文章
反向代理不适用于使用 apache2 的 ubuntu 20 上的 https
Ubuntu 18.04 上的“E:无法找到包 python-pip”[重复]