一文搞懂python虚拟环境配置及使用pyenv进行python多版本管理

前言:
ubuntu22.04版本预装了python3.10,由于项目需要安装python2.7版本,对安装和管理python版本相关命令进行记录。

  • 在Ubuntu中通过终端安装任何新软件之前都建议执行“双升”:
sudo apt update && sudo apt upgrade

1. 安装python

  • 查看python是否安装命令:
python3 --version
python3 -V
  • 安装其他版本的python命令:
sudo apt-get install pythonX.X

如果python2版本是>=2.7.9, python3版本是>=3.4,,pip是和python本身进行捆绑安装的。
否则,需要进行单独安装。

2. 安装pip

wget https://bootstrap.pypa.io/pip/2.7/get-pip.py
sudo python2 get-pip.py# 安装完之后检查一下pip是否可用
pip2 -V

3. 安装虚拟环境(此方法安装后的虚拟环境中的python版本为系统默认python版本)

安装对应版本的python和pip之后,安装virtualenv用以创建虚拟环境。

- 安装虚拟环境:
```bash
sudo pip install virtualenv
  • 创建虚拟环境:
virtualenv -p /usr/bin/pythonX.X venv
  • 激活虚拟环境:
source venv/bin/activate

注意:
此处的virtualenv依赖安装,虽然已经pip install了python2.7版本,但是系统的默认版本仍然是3.10,因此创建的virtualenv依赖是python3.10的,虚拟环境中的python也是3.10版本的。

4 使用pyenv管理python版本

背景:pyenv 是一个 Python 版本管理工具,它能够进行全局的 Python 版本切换,也可以为单个项目提供对应的 Python 版本。

4.1 安装pyenv依赖库

# 执行以下命令安装依赖库
# 更新源
sudo apt-get update
# 更新软件
sudo apt-get upgradesudo apt-get install make build-essential libssl-dev zlib1g-dev 
sudo apt-get install libbz2-dev libreadline-dev libsqlite3-dev wget curl 
sudo apt-get install llvm libncurses5-dev libncursesw5-dev

4.2 安装pyenv

pyenv的安装需要从git上进行拉取,并进行环境变量的配置:
首先选择安装路径,一般选择安装在家目录下,很多软件的配置文件等都是以隐藏文件的形式放在家目录下或者根目录下。

  • 安装路径设置为~/.pyenv,在终端窗口输入命令如下:
git clone https://github.com/pyenv/pyenv.git ~/.pyenv
或者
git clone https://gitee.com/krypln/pyenv.git   ~/.pyenv
  • 定义环境变量,在终端窗口输入命令如下:
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc
echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc
echo 'eval "$(pyenv init -)"' >> ~/.bashrc

4.3 pyenv的卸载

如果想卸载 pyenv(pyenv 安装的默认路径为 ~/.pyenv,如果自定义安装路径则删除自定义文件夹):

rm -fr ~/.pyenv

4.4 pyenv的使用

1. 查看目前支持安装的python版本:

 pyenv install --list

2. 在pyenv中安装python
在安装python之前,必须进行python所需依赖包的安装:

# 1. 安装 Python 所需要的依赖包
sudo apt-get install libc6-dev gcc
sudo apt-get install -y make build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm
# 2. 安装 Python
#---------------第一种方式---------------
pyenv install 3.8.5 -v  #-v 以日志模式显示安装过程
#因为pyenv会自动到github上下载,速度超慢,所以一般会选择使用curl或者wget下载到~/.pyenv/cache下,
#然后再用pyenv安装,推荐使用第一种方式。下面是可选的安装模式。
#---------------第二种方式---------------
cd ~/.pyenv
sudo mkdir cache
sudo wget -c https://www.python.org/ftp/python/3.10.12/Python-3.8.5.tar.xz -P  ~/.pyenv/cache/
pyenv install 3.8.5 -v
#这是python源,国内源没找,有空再更新# 3. 更新 pyenv 数据库
pyenv rehash# 4. 列出所安装的 Python 版本
pyenv versions#5. 切换 Python 版本
pyenv global 3.7.3# 6. 验证版本
python -V

注意:

  • 使用 pyenv 管理 Python,必须是用 pyenv 安装的 Python 才行,系统以前有的,需要重新用 pyenv 安装;
  • 使用 pip 安装第三方模块时会安装到 ~/.pyenv/versions/xxx 下,不会和系统模块发生冲突;
  • 使用 pip 安装模块后,可能需要执行 pyenv rehash 更新数据库。
  1. 列出本地pyenv中所有可用的python版本
pyenv versions
  1. 选择指定的python版本
pyenv global 3.7.3  
# 查看版本
python -V
  1. 删除指定的python版本
pyenv uninstall 3.7.3
remove /home/python/.pyenv/versions/3.7.3? y
// 列出删除 3.7. 3后,pyenv 中所有可用的 Python 版本
pyenv versions

4.5 安装 pyenv-virtualenv虚拟环境配置

1. 安装
pyenv的安装目录是/.pyenv,所以把pyenv-virtualenv克隆到/.pyenv/plugins下,执行下面的命令:

git clone https://github.com/pyenv/pyenv-virtualenv.git ~/.pyenv/plugins/pyenv-virtualenv

2. 配置环境变量,终端输入下面的命令:

echo 'eval "$(pyenv virtualenv-init -)"' >> ~/.bashrc
# 重新初始化 shell 环境,如果不执行该命令需要重新启动终端窗口
exec $SHELL

3. 创建指定python版本的虚拟环境

pyenv virtualenv 2.7.18 myvenv

4. 使用虚拟环境
在任意目录下,执行下面命令:

pyenv activate myvenv
# 查看虚拟环境python版本
python --version
# 查看pip版本、python版本、 pip 包安装的绝对路径,也是 pyenv 安装目录下/versions/python版本/envs/虚拟环境名/
pip --version

5. 退出虚拟环境
关掉终端,相当于退出虚拟环境

# 主动退出
pyenv deactivate 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/2356.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

动态规划 01背包(算法)

现有四个物品,小偷的背包容量为8,怎么可以偷得价值较多的物品 如: 物品编号: 1 2 3 4 物品容量: 2 3 4 5 物品价值: 3 4 5 8 记f(k,w) ,当背包容量为w,可以偷k件物品…

端到端自动驾驶模型SparseDrive论文阅读笔记

为了进一步的理解模型,方便对模型进行调试,对论文进行了详细的阅读,记录了相关的笔记,和论文阅读批注。 论文阅读批注连接: https://note.youdao.com/s/VC6mDgdZ 笔记如下图:

SAP ABAP开发学习——BAPI

目录 业务对象 概念 ​编辑业务对象浏览 BAPI BAPI的浏览 BAPI的调用 BAPI的确认和返回 BAPI的创建 MM/SD常用BAPI 附加:长文本修改 业务对象 概念 业务对象浏览 进入SWO3查看 双击BUS2012 双击下图上方红色位置可以看到BAPI方法的内容 BAPI BAPI(Busines…

【网络】自定义协议——序列化和反序列化

> 作者:დ旧言~ > 座右铭:松树千年终是朽,槿花一日自为荣。 > 目标:了解什么是序列化和分序列,并且自己能手撕网络版的计算器。 > 毒鸡汤:有些事情,总是不明白,所以我不…

linux 原子操作

首先是为什么要有 原子操作 网上的截图: 不能从C语言来看,要从汇编来看 但是实际的情况有可能是这样。 A进程没有得到想要的结果。 然后是 原子操作的 底层实现 最终会是这段代码,当然只是一个 加一的操作。 static inline void atomic_a…

[MySQL]DQL语句(二)

(一)里面我们以单表查询为基础,讲了DQL语句的基础,这篇我们来讲多表查询。 联合查询 联合查询的作用是合并结果集,也就是把两个select语句的查询结果合并到一起。合并结果集的方式有两种,分别是去重和不去重。语法格式为: SELEC…

2-143 基于matlab-GUI的脉冲响应不变法实现音频滤波功能

基于matlab-GUI的脉冲响应不变法实现音频滤波功能,输入加噪信号,通过巴特沃斯模拟滤波器脉冲响应不变法进行降噪。效果较好。程序已调通,可直接运行。 下载源程序请点链接:2-143 基于matlab-GUI的脉冲响应不变法实现音频滤波功能…

初学者如何对大模型进行微调?

粗略地说,大模型训练有四个主要阶段:预训练、有监督微调、奖励建模、强化学习。 预训练消耗的时间占据了整个训练pipeline的99%,其他三个阶段是微调阶段,更多地遵循少量 GPU 和数小时或数天的路线。预训练对于算力和数据的要求非…

MySQL—基础学习

对于数据库MySQL的基础学习与Datagrip的使用 1.MySQL概述 (1)相关概念 数据库 :存储数据的仓库 (DB) 数据库管理系统:操控和管理数据库的大型软件(DBMS) SQL:操作关系…

客户案例 | 智原科技利用Ansys多物理场分析增强3D-IC设计服务

Ansys经过认证的半导体解决方案将帮助智原科技缩短2.5D/3D-IC的设计周期,并确保设计符合信号完整性和性能目标 主要亮点 智原科技将使用Ansys RaptorX™片上电磁(EM)建模解决方案来增强2.5D/3D集成电路(IC)的先进封装设…

集成框架 -- 自定义二方包 starter

自定义starter 二方包 My-thread-pool-startermy-thread-pool-starter 整体架构 测试 MyTestAppApplication测试工程 my-test-app 结构测试项目的 pom.xml 二方包 My-thread-pool-starter POM 文件 <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi&…

Spring框架的JDBC模板技术

目录 一、JDBC模板类的使用 1.引入依赖 2.测试类 3.运行&#xff0c;查看数据库 二、使用Spring框架来管理模板类 1.配置文件 2.测试类 3.运行&#xff0c;查看数据库 三、Spring框架管理开源的连接池 1.配置开源的连接池 2.将数据库连接的信息配置到属性文件中 3.核…

头歌答案-分布式文件系统HDFS

目录 第1关&#xff1a;HDFS的基本操作 第2关&#xff1a;HDFS-JAVA接口之读取文件 第3关&#xff1a;HDFS-JAVA接口之上传文件 第4关&#xff1a;HDFS-JAVA接口之删除文件 第1关&#xff1a;HDFS的基本操作 # 1. 启动Hadoop start-all.sh # 启动Hadoop集群 # 或使用以…

mysql设置允许外部ip访问,局域网IP访问

&#xff08;支持MYSQL8版本&#xff09; 1. 登录进入mysql&#xff1b;mysql -uroot -p输入密码进入 2. 输入以下语句&#xff0c;进入mysql库&#xff0c;查看user表中root用户的访问 use mysql; select host,user from user; 3. 更新user表中root用户域属性&#xff0c…

深度学习基础(2024-11-02更新到图像尺寸变换 与 裁剪)

1. 名词解释 FFN FFN &#xff1a; Feedforward Neural Network&#xff0c;前馈神经网络馈神经网络是一种基本的神经网络架构&#xff0c;也称为多层感知器&#xff08;Multilayer Perceptron&#xff0c;MLP&#xff09;FFN 一般主要是包括多个全连接层(FC)的网络&#xff…

Python | Leetcode Python题解之第526题优美的排列

题目&#xff1a; 题解&#xff1a; class Solution:def countArrangement(self, n: int) -> int:f [0] * (1 << n)f[0] 1for mask in range(1, 1 << n):num bin(mask).count("1")for i in range(n):if mask & (1 << i) and (num % (i …

Windows无法访问\\192.168.1.156,错误代码0x800704cf

1.首先要保证网络与共享中心的高级共享设置要打开 2.其他要保证两个机器在一个局域网 最简单的验证方法就是要相互可以ping通 3.如果满足以上条件还是会访问失败 4.可能的原因之一&#xff1a;防火墙设置 你要确保&#xff1a; 网络发现文件传送程序文件和打印机共享 在对应…

蓝桥杯 区间移位--二分、枚举

题目 代码 #include <stdio.h> #include <string.h> #include <vector> #include <algorithm> #include <iostream> using namespace std; struct node{ int a,b; }; vector<node> q; bool cmp(node x,node y){ return x.b <…

华为ENSP--ISIS路由协议

项目背景 为了确保资源共享、办公自动化和节省人力成本&#xff0c;公司E申请两条专线将深圳总部和广州、北京两家分公司网络连接起来。公司原来运行OSFP路由协议&#xff0c;现打算迁移到IS-IS路由协议&#xff0c;张同学正在该公司实习&#xff0c;为了提高实际工作的准确性和…

Java-I/O框架10:File类、文件操作

视频链接&#xff1a;16.26 文件操作_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV1Tz4y1X7H7?spm_id_from333.788.videopod.episodes&vd_sourceb5775c3a4ea16a5306db9c7c1c1486b5&p26 1.File类概述 概念&#xff1a;代表物理盘符中的一个文件或者文件夹&am…