当前位置: 首页 > article >正文

【pyenv+venv组合来使用Python虚拟环境的方法】

背景

公司为了省钱,压缩使用anaconda的名额,因此我需要掌握非conda的python虚拟环境工具。

一、pyenv + venv

经过调研实验,我们可以使用pyenv + venv 相结合的方式来勉强实现conda的核心功能:

  1. 创建虚拟环境,指定版本的python
  2. 在该虚拟环境安装包。

接下来我们逐步演示操作,就以我mac为例,linux应该差不多,可以问大模型;至于windows,现在都是双系统,用linux来开发吧!

1.1 安装与配置pyenv

默认你已经安装了homebrew并把源改为国内的源,比如清华源、阿里源等。

1.1 安装pyenv

brew install pyenv

1.2 配置pyenv

安装完成后,需要将pyenv 添加到shell的环境变量中,以方便系统能找到Pyenv命令。可以放到.zshrc中,或者我一般会有自己的~/.mx_bashrc来定制一些个性化设置,也可以放到.mx_bashrc里边。

export PYENV_ROOT="$HOME/.pyenv"    # 注意,因为我会修改$HOME的值,所以这里的路径 要注意根据实际情况修改
export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init --path)"

1.3 验证安装

执行以下命令来验证pyenv是否安装成功。

pyenv --version

如果输出pyenv的版本号,则表示安装成功。

2. 安装指定版本的Python并使用

2.1 使用pyenv 来安装指定版本的python。

# 以安装3.11版本的python为例,不需要写python=3.11
pyenv install 3.11

2.2 使用该版本

指定使用pyenv下载的某个版本的python

pyenv local 3.11

3. 创建并使用虚拟环境

3.1 创建虚拟环境

注意,使用venv的方式来创建虚拟环境,需要python 3.3版本以上。

虚拟环境要放到一个目录,所以你先在终端进入到预期存放环境的目录里,运行以下指令,会在当前目录下创建一个 your-env-name的文件夹。

python -m venv your-env-name

3.2 激活虚拟环境

在刚创建的虚拟环境夹里找到激活命令并激活。

source your-env-name/bin/activate

3.2 安装包

在安装前,最好切换一下包的源,改为清华源或者阿里源。

3.2.1 更换安装源
  • 如果是在安装包时临时使用一下:
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple numpy
  • 如果要永久修改当前及以后的虚拟环境的源为清华源
    用命令行的方式最常见:
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
pip config set install.trusted-host pypi.tuna.tsinghua.edu.cn

也可以用手工修改配置文件的方式:

# 在~./pip/pip.conf里编辑,添加内容,如果没有该文件,那么就创建

mkdir -p ~/.pip
vim ~/.pip/pip.conf

在该文件里添加下述内容。

[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple

[install]
trusted-host = pypi.tuna.tsinghua.edu.cn
3.2.2 安装包

这是后就可以正常用pip 来安装包了

pip install numpy==3.8.1 

3.3 复制当前虚拟环境

有时候需要迁移代码,需要把虚拟环境也迁移过去。

# 导出配置
pip freeze > requirements.txt

# 载入配置
pip install -r requirements.txt

4. 退出激活环境

很简单,直接一个deactivate 命令即可。

deactivate

5. 删除虚拟环境

为了节省空间,可以删掉不需要的虚拟环境。很简单,直接删除虚拟环境所在的文件夹即可。

rm -rf your-env-name/

http://www.kler.cn/a/583678.html

相关文章:

  • 大脑宏观结构中的富集俱乐部:图论分析视角
  • 【Vue】el-dialog的2种封装方法(父子组件双向通信),$emit触发父事件/.sync修饰符双向绑定
  • 家电制造行业内检实验室LIMS系统推荐 如何提升家电制造行业品质
  • Linux网络编程之——网络初认识
  • 家政服务平台(源码+文档+讲解+演示)
  • 探讨如何在AS上构建webrtc(3)分享WebRTC-CMakeBuild轻量化工程
  • 深度剖析Redis:双写一致性问题及解决方案全景解析
  • Insar结合ISCE2,某一个文件进行并行-stackSentinel.py
  • 二、Jenkins部署你的第一个自动化流程(Vuepress项目)
  • Redis 主从复制机制深度解析与实践指南
  • Ubuntu 下 nginx-1.24.0 源码分析 - ngx_core_module
  • 面试之《commonjs,requirejs和es6 Module的区别》
  • 高并发下订单库存防止超卖策略
  • 物理服务器抵御网络攻击的方法都有哪些?
  • 力扣练习之确定两个字符串是否接近
  • Redis 哨兵模式详解:实现高可用与自动故障转移
  • MySQL数据实时同步至Elasticsearch的高效方案:Java实现+源码解析,一文搞定!
  • 【嵌入式linux】网口和USB热插拔检测
  • 【MySQL是怎么运行的】三、事务
  • python pip及常用国内镜像源