Python 和 Linux 中的 python3 是否有不同的 pip?

Is Python and python3 in Linux has different pip?

我在 Ubuntu 21.04 软件上安装了 Django,但是当我使用时:

python manage.py runserver 

我收到一条错误信息: 没有名为“Django”的模块 但是当我使用 :

python3 manage.py runserve

它工作正常,但我的 python —-版本是 3.10.1 和 python3 —版本是 3.9.x 那么错误是什么以及我如何 运行 它与 python 而不是 python3

如果您使用 PIP3 安装模块,则只会为 Python3 安装。如果您使用 PIP 安装模块,系统将使用在 PATH 变量中首先列出的 Python 版本。

这里的问题是 pythonpython3 命令指向两个不同的 Python installations/environments。

看起来您在 Python 3.9.x 环境(您通过键入 python3 访问的环境)中安装了 Django。

另一方面,您的 Python 3.10.1 环境(您通过编写 python 访问)似乎没有安装 Django。

pip/pip3 命令有时令人困惑,并且可能指向与您认为的不同的 Python 安装。这完全取决于您如何在计算机中设置 Python 环境。

为了访问特定Python环境的pip,最好的方法是运行它作为一个模块,例如:

python -m pip [...]

这保证您正在使用的 pip 是与您使用 python 命令唤起的 Python 环境相关联的环境。

因此,为了在您的 Python 3.10.1 环境中安装 Django,您需要 运行:

python -m pip install django

您的计算机上有多个 Python 实例。为避免将来出现此类问题,如果您 运行 在通用设备上编写代码,通常建议在 Python 中使用 Virtualenv。 (并且在您的计算机上有多个 Python 个实例)

为了配置 Virtualenv 运行 以下命令:

sudo apt install python3-venv python3-pip python3 -m venv venv

然后你激活虚拟环境: source venv/bin/activate

激活虚拟环境后,您可以在这个特定的虚拟环境中安装 Python 模块,这样您就不会遇到诸如您描述的问题:

pip install django

然后如果你 运行:

python manage.py runserver, 那么它将在特定虚拟环境的上下文中 运行ning。

我知道这不是您问题的直接答案,但我相信它会帮助您避免将来出现此类问题。