【问题标题】:wsl ubuntu 20.04 -> with python3.9 and without python3.8wsl ubuntu 20.04 -> 有 python3.9 和没有 python3.8
【发布时间】:2022-01-22 20:43:03
【问题描述】:

想将 python3.9 与实际的pipvenv 一起使用。并删除 python3.8。 我已经像that 一样安装了python3.9。然后pip。和python3.9-venv 使用apt

问题是pipvenv 使用distutils。 Whish 通过python3-distutils 下载(python3.9-distutils 是指python3-distutils 的虚拟包)并用它拖动python3.8

我尝试使用所有that 方法一一删除python3.8。但每次distutilspython3.8 一起删除。我读了that 对话。而且我不太确定,但似乎在 python3.8 包之外没有 distutils

那么我是永远使用 python3.8 还是有解决方案可以安全地删除它?或者以某种方式提取 distutils 并将其与 python3.9 绑定?

【问题讨论】:

    标签: python ubuntu-20.04 distutils wsl-2


    【解决方案1】:

    不要删除系统 Python

    Ubuntu 20.04 系统需要 Python 3.8 才能实现其自身的功能。不应删除系统 Python,在本例中为 Python 3.8,因为这会使系统不稳定。

    无需删除 Python 3.8 即可使用 Python 3.9。

    更多信息在这里:https://unix.stackexchange.com/questions/652299/changing-pythons-default-version-breaks-ubuntu-20-04

    不需要python3.9-distutils

    python3-distutils 适用于 Python 3.8 和 Python 3.9,不需要 python3.9-distutils

    来源:https://github.com/deadsnakes/issues/issues/150#issuecomment-761180428

    使用 Python 3.9 创建 venv 虚拟环境

    yourname@machine:~$ python3.9 -m venv /home/yourname/.venvs/my-venv-name
    

    激活虚拟环境:

    yourname@machine:~$ source /home/yourname/.venvs/my-venv-name/bin/activate
    

    查看python版本,应该是3.9:

    (my-venv-name) yourname@machine:~$ python -V
    Python 3.9.9
    

    查看venv中的pip版本,可能与系统pip版本不同:

    (my-venv-name) yourname@machine:~$ pip3 --version
    pip 21.2.4 from /home/yourname/.venvs/my-venv-name/lib/python3.9/site-packages/pip (python 3.9)
    

    停用虚拟环境:

    (my-venv-name) yourname@machine:~$ deactivate
    

    检查系统 pip 版本,在任何 venv 之外:

    yourname@machine:~$ pip3 --version
    pip 20.0.2 from /usr/lib/python3/dist-packages/pip (python 3.8)
    

    【讨论】:

    • 我已经将最新的pip 安装到系统级别...我应该卸载它并重新安装python3.8(可能包含pip)吗?我也没有mkvirtualenv“找不到命令”。与virtualenv 相同。我仍然可以继续使用python -m venv venv(python 绑定到 python3.9)。
    • 好的...我发现在系统级别手动安装pip 的问题。 pip 不存在于 /usr/bin。它仍然能够安装,但要卸载一些我需要 SU 权限的软件包,但 sudo pip uninstall ... 导致 "sudo: pip: command not found"
    • mkvirtualenvvirtualenv 命令感到抱歉。 virtualenv 是另一个用于创建虚拟环境的包,而不是 venvmkvirtualenv 是来自virtualenvwrapper 的命令,是virtualenv 的一组扩展,用于管理virtualenv 创建的虚拟环境。更正了我使用 venv 的答案(删除了使用 virtualenvvirtualenvwrapper 的说明)。
    猜你喜欢
    • 2020-09-03
    • 1970-01-01
    • 2021-08-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-10
    • 2020-12-18
    相关资源
    最近更新 更多