pyenv安装python虚拟环境

简介: pyenv安装python虚拟环境

pyenv介绍

pyenv是一个forked自ruby社区的简单、低调、遵循UNIX哲学的Python环境管理工具, 它可以轻松切换全局解释器版本, 同时结合vitualenv插件可以方便的管理对应的包源。

为什么我们需要pyenv

Python解释器版本混乱, 2和3差别巨大, 而且细分版本也不尽相同, 难以选择和管理.

不同Linux发行版自带Python不同, 如ubuntu16自带2.7和3.5版本, 其中系统许多组件依赖于自带解释器, 一旦删除或者更改都可能会造成系统出问题.

不同的Python解释器软件包管理也是问题, 如pip和ipython等必备包组件, 而且在项目开发中如何保证不同的包环境互不干扰也是一个问题.

准备工作

本次我在CentOS 7.9下安装pyenv,在安装之前需要先进行一些准备工作

yum -y install git curl wget 
yum -y install gcc make patch gdbm-devel openssl-devel      # Python编译需要的工具包
yum -y install sqlite-devel readline-devel zlib-devel bzip2-devel

pyenv是源代码编译安装Python解释器,所以一定要安装gcc等依赖

如果想更加安全的话可以新建一个普通用户并切换过去再进行后续操作

useradd -r python -m 
echo '1' |passwd --stdin python
su - python

安装pyenv

pyenv官网

在GitHub项目地址有多种操作系统安装方式(包括MacOS,Windows等),本次我使用的是CentOS来进行安装

curl -L https://github.com/pyenv/pyenv-installer/raw/master/bin/pyenv-installer | bash
# 或
curl -L https://github.com/pyenv/pyenv-installer/blob/master/bin/pyenv-installer

脚本本质上是去github进行克隆,如果这一步都失败了,那么其实是安装不上的,因此可以将这个脚本github修改为gitee,当然如果你可以上GitHub那可以直接忽略这一步

当你无法访问GitHub的话:

#!/usr/bin/env bash
set -e
[ -n "$PYENV_DEBUG" ] && set -x
if [ -z "$PYENV_ROOT" ]; then
  export PYENV_ROOT="${HOME}/.pyenv"
fi
colorize() {
  if [ -t 1 ]; then printf "\e[%sm%s\e[m" "$1" "$2"
  else echo -n "$2"
  fi
}
# Checks for `.pyenv` file, and suggests to remove it for installing
if [ -d "${PYENV_ROOT}" ]; then
  { echo
    colorize 1 "WARNING"
    echo ": Can not proceed with installation. Kindly remove the '${PYENV_ROOT}' directory first."
    echo
  } >&2
    exit 1
fi
failed_checkout() {
  echo "Failed to git clone $1"
  exit -1
}
checkout() {
  [ -d "$2" ] || git clone --depth 1 "$1" "$2" || failed_checkout "$1"
}
if ! command -v git 1>/dev/null 2>&1; then
  echo "pyenv: Git is not installed, can't continue." >&2
  exit 1
fi
if [ -n "${USE_GIT_URI}" ]; then
  GITHUB="git://github.com"
else
  GITHUB="https://github.com"
fi
GITHUB="https://gitee.com"
checkout "${GITHUB}/ibuki_fuuko/pyenv.git"            "${PYENV_ROOT}"
checkout "${GITHUB}/codeseth/pyenv-doctor.git"     "${PYENV_ROOT}/plugins/pyenv-doctor"
checkout "${GITHUB}/yuebanlaosiji/pyenv-installer.git"  "${PYENV_ROOT}/plugins/pyenv-installer"
checkout "${GITHUB}/codeseth/pyenv-update.git"     "${PYENV_ROOT}/plugins/pyenv-update"
checkout "${GITHUB}/unicode233/pyenv-virtualenv.git" "${PYENV_ROOT}/plugins/pyenv-virtualenv"
checkout "${GITHUB}/mouday/pyenv-which-ext.git"  "${PYENV_ROOT}/plugins/pyenv-which-ext"
if ! command -v pyenv 1>/dev/null; then
  { echo
    colorize 1 "WARNING"
    echo ": seems you still have not added 'pyenv' to the load path."
    echo
  } >&2
  { # Without args, `init` commands print installation help
    "${PYENV_ROOT}/bin/pyenv" init || true
    "${PYENV_ROOT}/bin/pyenv" virtualenv-init || true
  } >&2
fi

拷贝代码至文件pyenv_install.sh

bash pyenv_install.sh

执行完成之后有如下输出

cc04411ea1d84bc6b335d75ff58621bd.png这里就提示我们设置环境变量了

cat >> ~/.bashrc <<EOF
export PYENV_ROOT="\$HOME/.pyenv"     
export PATH="/home/python/.pyenv/bin:\$PATH"
eval "\$(pyenv init --path)"
eval "\$(pyenv init -)"
eval "\$(pyenv virtualenv-init -)"
EOF
# \是用来转义$的,如果是直接打开.bashrc进行修改的话需要去掉\
source ~/.bashrc

安装python多版本

pyenv install -l  
# 列出可安装的版本,会输出很多
# 等价于 pyenv install --list
pyenv install 3.6.9 -vvv  
# -vvv是打印详细信息,也可不加
pyenv install 3.7.7

安装的版本会在~/.pyenv/versions目录下。

对于比较大的版本文件,例如anaconda,可以先到官网下载,然后将文件放在~/.pyenv/cache目录下,再执行安装命令时,pyenv不会重复下载。

$ ls .pyenv/versions/
3.6.9  3.7.7

如果要卸载的话就是将install修改为uninstall

也可以直接打印已安装的版本

$ pyenv version   # 打印当前使用版本
$ pyenv versions  # 打印所有已安装版本,*星号表示当前版本

设置虚拟环境

由于不同项目,或使用不同Python版本,或使用同版本Python但使用不同版本库,很难将它们部署在一

起,所以,应该使用不同的虚拟环境隔离部署。

使用pyenv local 命令建立一个目录和一个Python版本或虚拟版本之间的关系,该目录的子孙目录默认

也继承这个版本。

设置一个python3.6.9的虚拟环境

[python@k82 ~]$ mkdir -p projects/test369     # 新建一个目录,以后在这个目录下的python环境为3.6.9
[python@k82 ~]$ cd projects/test369/
[python@k82 test369]$ pyenv virtualenv 3.6.9 py369  # 设置py369的python版本为python3.6.9
[python@k82 test369]$ pyenv local py369       # 设置当前目录的python本地版本为py369
(py369) [python@k82 test369]$ python -V
Python 3.6.9
(py369) [python@k82 test369]$ pyenv version
py369 (set by /home/python/projects/test369/.python-version)

同理设置一个python3.7.7的虚拟环境

[python@k82 ~]$ mkdir -p projects/test377
[python@k82 ~]$ cd projects/test377/
[python@k82 test377]$ pyenv virtualenv 3.7.7 py377
[python@k82 test377]$ pyenv local py377 
(py377) [python@k82 test377]$ python -V
Python 3.7.7
(py377) [python@k82 test377]$ pyenv version
py377 (set by /home/python/projects/test377/.python-version)

但是此时全局的python版本并未发生改变

[python@k82 ~]$ pwd
/home/python
[python@k82 ~]$ python -V 
Python 2.7.5
[python@k82 ~]$ pyenv version
system (set by /home/python/.pyenv/version)
[python@k82 ~]$ pyenv versions
* system (set by /home/python/.pyenv/version)
  3.6.9
  3.6.9/envs/py369
  3.7.7
  3.7.7/envs/py377
  py369
  py377


目录
相关文章
|
1月前
|
PyTorch Linux 算法框架/工具
pytorch学习一:Anaconda下载、安装、配置环境变量。anaconda创建多版本python环境。安装 pytorch。
这篇文章是关于如何使用Anaconda进行Python环境管理,包括下载、安装、配置环境变量、创建多版本Python环境、安装PyTorch以及使用Jupyter Notebook的详细指南。
257 1
pytorch学习一:Anaconda下载、安装、配置环境变量。anaconda创建多版本python环境。安装 pytorch。
|
1月前
|
网络协议 Java Linux
PyAV学习笔记(一):PyAV简介、安装、基础操作、python获取RTSP(海康)的各种时间戳(rtp、dts、pts)
本文介绍了PyAV库,它是FFmpeg的Python绑定,提供了底层库的全部功能和控制。文章详细讲解了PyAV的安装过程,包括在Windows、Linux和ARM平台上的安装步骤,以及安装中可能遇到的错误和解决方法。此外,还解释了时间戳的概念,包括RTP、NTP、PTS和DTS,并提供了Python代码示例,展示如何获取RTSP流中的各种时间戳。最后,文章还提供了一些附录,包括Python通过NTP同步获取时间的方法和使用PyAV访问网络视频流的技巧。
210 4
PyAV学习笔记(一):PyAV简介、安装、基础操作、python获取RTSP(海康)的各种时间戳(rtp、dts、pts)
|
18天前
|
弹性计算 Linux iOS开发
Python 虚拟环境全解:轻松管理项目依赖
本文详细介绍了 Python 虚拟环境的概念、创建和使用方法,包括 `virtualenv` 和 `venv` 的使用,以及最佳实践和注意事项。通过虚拟环境,你可以轻松管理不同项目的依赖关系,避免版本冲突,提升开发效率。
|
1月前
|
Python
Python 三方库下载安装
Python 三方库下载安装
28 1
|
1月前
|
机器学习/深度学习 缓存 PyTorch
pytorch学习一(扩展篇):miniconda下载、安装、配置环境变量。miniconda创建多版本python环境。整理常用命令(亲测ok)
这篇文章是关于如何下载、安装和配置Miniconda,以及如何使用Miniconda创建和管理Python环境的详细指南。
378 0
pytorch学习一(扩展篇):miniconda下载、安装、配置环境变量。miniconda创建多版本python环境。整理常用命令(亲测ok)
|
1月前
|
Python
【python从入门到精通】-- 第一战:安装python
【python从入门到精通】-- 第一战:安装python
49 0
|
7天前
|
机器学习/深度学习 人工智能 TensorFlow
人工智能浪潮下的自我修养:从Python编程入门到深度学习实践
【10月更文挑战第39天】本文旨在为初学者提供一条清晰的道路,从Python基础语法的掌握到深度学习领域的探索。我们将通过简明扼要的语言和实际代码示例,引导读者逐步构建起对人工智能技术的理解和应用能力。文章不仅涵盖Python编程的基础,还将深入探讨深度学习的核心概念、工具和实战技巧,帮助读者在AI的浪潮中找到自己的位置。
|
7天前
|
机器学习/深度学习 数据挖掘 Python
Python编程入门——从零开始构建你的第一个程序
【10月更文挑战第39天】本文将带你走进Python的世界,通过简单易懂的语言和实际的代码示例,让你快速掌握Python的基础语法。无论你是编程新手还是想学习新语言的老手,这篇文章都能为你提供有价值的信息。我们将从变量、数据类型、控制结构等基本概念入手,逐步过渡到函数、模块等高级特性,最后通过一个综合示例来巩固所学知识。让我们一起开启Python编程之旅吧!
|
7天前
|
存储 Python
Python编程入门:打造你的第一个程序
【10月更文挑战第39天】在数字时代的浪潮中,掌握编程技能如同掌握了一门新时代的语言。本文将引导你步入Python编程的奇妙世界,从零基础出发,一步步构建你的第一个程序。我们将探索编程的基本概念,通过简单示例理解变量、数据类型和控制结构,最终实现一个简单的猜数字游戏。这不仅是一段代码的旅程,更是逻辑思维和问题解决能力的锻炼之旅。准备好了吗?让我们开始吧!