首页 > 系统相关 >Ubuntu 更新后出现多个 Python 版本

Ubuntu 更新后出现多个 Python 版本

时间:2023-08-03 17:58:08浏览次数:30  
标签:venv 版本 Python environment install Ubuntu pip 安装

电脑本来只有一个 Python3.10, 可能是由于系统升级的原因,发现电脑多了一个 Python3.11 版本,这带来了好多麻烦,比如我很多软件包都安装在 python3.10 中,但是命令行输入 pip 调用的是 python3.11 的,并且之前创建的虚拟环境感觉也不太正常了。

我决定删除旧版本 Python

python3.10 -m pip freeze > backup.txt # 备份已安装的包
sudo apt purge python3.10
sudo apt autoremove

接下来是恢复之前安装的软件包,不过这里遇到了错误

$ pip install -r backup.txt
error: externally-managed-environment

× This environment is externally managed
╰─> To install Python packages system-wide, try apt install
    python3-xyz, where xyz is the package you are trying to
    install.
    
    If you wish to install a non-Debian-packaged Python package,
    create a virtual environment using python3 -m venv path/to/venv.
    Then use path/to/venv/bin/python and path/to/venv/bin/pip. Make
    sure you have python3-full installed.
    
    If you wish to install a non-Debian packaged Python application,
    it may be easiest to use pipx install xyz, which will manage a
    virtual environment for you. Make sure you have pipx installed.
    
    See /usr/share/doc/python3.11/README.venv for more information.

note: If you believe this is a mistake, please contact your Python installation or OS distribution provider. You can override this, at the risk of breaking your Python installation or OS, by passing --break-system-packages.
hint: See PEP 668 for the detailed specification.

查阅了一番资料后,发现,原因可能在于,现在电脑上的 Python3.11 是 Linux 系统包管理器提供的,使用 pip 安装软件包可能会干扰到原本系统软件包的正常工作,因此在这种情况下,比较推荐的做法是:

  • 系统层面的 python 软件包,使用包管理器安装,例如 apt install python3-xxx
  • 项目/本地层面创建虚拟环境,在虚拟环境内使用 pip 安装

最终,我选择在系统层面 apt install python3-virtualenv 方便创建虚拟环境,其余的依赖项则在项目文件夹中 pip 安装。
系统层面可以安装一些基础性的软件包,不过可惜的是并没有 pipreqs 可以安装,只能 pip 安装……

为了方便,我在 zsh 设定中添加了下面的函数方便调用:

create-virtualenv() {
    virtualenv .venv
    source ./venv/bin/activate
    pip install pipreqs
}

参考资料:

其他说明

如果保留两个版本,只需要日常使用时稍微注意下就好了,例如,需要使用 Python3.10 时:

python3.10
python3.10 -m pip

标签:venv,版本,Python,environment,install,Ubuntu,pip,安装
From: https://www.cnblogs.com/zkmjolnir/p/17603917.html

相关文章

  • 18.python打包win32print时报错,说找不到该模块
    相关插件自己提前安装好。代码:1#encoding:utf-823fromtkinterimport*4fromtkinterimportmessagebox5importwin32print6importtime7fromtkinterimportscrolledtext89#控制输入框只能输入数字且小于8位数10defvalidate_op(in......
  • 【SpringBoot学习】3、SpringBoot 多个版本配置简单的拦截器
    springboot1.x和springboot2.x配置拦截器区别就在于注册拦截器的方式不同,springboot1.x配置方法是:publicclassWebAppConfigextendsWebMvcConfigurerAdapter{springboot2.x配置方法是:publicclassLoginConfigurerimplementsWebMvcConfigurer{下面详细的介绍使......
  • Python中实现远程调用(RPC、RMI)简单例子
    远程调用使得调用远程服务器的对象、方法的方式就和调用本地对象、方法的方式差不多,因为我们通过网络编程把这些都隐藏起来了。远程调用是分布式系统的基础。远程调用一般分为两种,远程过程调用(RPC)和远程方法调用(RMI)。RPCRPC属于函数级别的远程调用,其多是通过HTTP传输数据,数据形式有......
  • AI全版本下载AI最新版下载AI 官方版特色
    Adobeillustrator2023上线了,支持macOS11及更高版本,极大的提高了工作效率。借助这款AI2023中文版矢量图形软件,您可以制作适用于印刷、Web、视频和移动设备的徽标、图标、绘图、版式和插图的矢量图设计,这是广大设计师常用的软件之一。同时,您还可以创建用于大幅面打印(例如广告牌)的......
  • Haxx curl 控件版本升级
    Haxxcurl7.65.1_2之前版本中存在代码注入漏洞,将版本升级可解决代码注入漏洞(CVE-2019-5443)https://curl.se/download.html  官网下载windows版本升级  2,解压,复制curl.exe到Windows的系统环境目录,默认是C:\Windows\System32 3,下载安装VisualStudio2010C++Runt......
  • python以及java环境搭建+解决不同版本环境共存问题
    1.搭建python环境1.安装python3.9.7,选择自定义安装、将文件添加至环境路径,然后选择下一步。2.默认、然后选择下一步。3.选择适用于所有使用者,选择自己想要存放的路径,然后选择点击安装。等待片刻。。。4.点击安装完成。使用cdm命令,输入python查看是否安装成功。5.安装python2......
  • minio python sdk使用
    如下fromminioimportMiniofromminio.errorimportS3Errorimportlogginglogging.basicConfig(filename='logs/myProgramLog.log',level=logging.INFO,format='%(asctime)s-%(levelname)s-%(message)s')classBucket......
  • [算法题python]728.自除数
    自除数 是指可以被它包含的每一位数整除的数。例如,128 是一个 自除数 ,因为 128%1==0,128%2==0,128%8==0。自除数 不允许包含0。给定两个整数 left 和 right ,返回一个列表,列表的元素是范围 [left,right] 内所有的 自除数 。 示例1:输入:left=......
  • linux centos ubuntu 网络图标消失的解决办法
     在使用linux的过程中,有时会出现网络图标消失的问题,这时系统会没有网络。有些linux的网络连接由NetworkManager管理,问题应由它解决。先执行一下systemctlrestartNetworkManager看有没有效果。原因一:NetworkManager未接管网络解决办法:nmclinetworkingon原因:在终......
  • Python | 判断语句、循环语句
    上一篇:Python|基础语法判断是程序最基础最核心的逻辑功能。1.布尔类型和比较运算符1.1布尔(bool)类型布尔(bool)表达现实生活中的逻辑,即真和假:True表示真;False表示假。True本质上是一个数字记作1,False记作01.1.1布尔类型字面量True表示真(是、肯定)False表示假(否......