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


目录
相关文章
|
8月前
|
Linux 计算机视觉 C++
【解决方案】Building wheel for opencv-python:安装卡顿的原因与解决方案
当你安装OpenCV时,命令行停在Building wheel for opencv-python (PEP 517) ... -似乎卡住了。这并非程序假死,而是其编译耗时巨大。本文将揭示原因,并提供优化安装体验的实用方法。
1000 88
|
6月前
|
人工智能 数据安全/隐私保护 异构计算
桌面版exe安装和Python命令行安装2种方法详细讲解图片去水印AI源码私有化部署Lama-Cleaner安装使用方法-优雅草卓伊凡
桌面版exe安装和Python命令行安装2种方法详细讲解图片去水印AI源码私有化部署Lama-Cleaner安装使用方法-优雅草卓伊凡
890 8
桌面版exe安装和Python命令行安装2种方法详细讲解图片去水印AI源码私有化部署Lama-Cleaner安装使用方法-优雅草卓伊凡
|
8月前
|
人工智能 数据挖掘 Linux
Centos安装Python3.7(亲测可用)
本指南详细介绍了在基于Linux(以CentOS系统为例,使用yum包管理器)的系统上安装Python 3.7版本的完整流程。Python是一种广泛使用的高级编程语言,在各种领域如软件开发、数据分析、人工智能和区块链开发等都有着重要的应用。
689 2
|
11月前
|
IDE 开发工具 开发者
手把手教你安装PyCharm 2025:开发者的Python IDE配置全流程+避坑指南
本教程详细介绍了PyCharm 2025版本在Windows系统下的安装流程及配置方法,涵盖AI代码补全与智能调试工具链等新功能。内容包括系统要求、安装步骤、首次运行配置(如主题选择与插件安装)、创建首个Python项目,以及常见问题解决方法。此外,还提供了切换中文界面和延伸学习资源的指导,帮助用户快速上手并高效使用PyCharm进行开发。
5408 61
|
11月前
|
存储 缓存 文件存储
uv安装python及其依赖的加速方法
国内在使用uv的时候,可能会涉及到装python的速度太慢的问题,为了解决这个问题,可以使用`UV_PYTHON_INSTALL_MIRROR`这个环境变量。除此以外,对于多人协作场景,`UV_CACHE_DIR`也是一个有用的环境变量。本文会介绍这两个变量。
7083 10
|
Linux iOS开发 MacOS
【chat-gpt问答记录】python虚拟环境venv的简介及使用
【chat-gpt问答记录】python虚拟环境venv的简介及使用
398 2
|
Shell Linux Ruby
Python3虚拟环境venv
`venv` 是 Python 的虚拟环境工具,用于为不同项目创建独立的运行环境,避免依赖冲突。通过 `python3 -m venv` 命令创建虚拟环境,并使用 `source bin/activate` 激活。激活后,所有 Python 包将安装在该环境中,不影响系统全局环境。退出环境使用 `deactivate` 命令。每个虚拟环境拥有独立的包集合,确保项目间的隔离性。删除虚拟环境只需删除其目录即可。
1345 34
|
Python
探索Python虚拟环境:virtualenv、venv与pipenv比较
在Python开发中,有效的环境管理至关重要。virtualenv、venv和pipenv是常用的虚拟环境管理工具。virtualenv支持Python 2.7+和3.3+,可创建独立环境;venv为Python 3.3+内置库,简单轻量但功能有限;pipenv则结合了包管理和虚拟环境管理,生成Pipfile.lock确保依赖确定性和安全性,推荐作为首选工具。
540 2
|
Python Windows
[Python]搭建虚拟环境与Django项目的创建[virtualenv virtualenvwrapper venv](Windows)(上)
[Python]搭建虚拟环境与Django项目的创建[virtualenv virtualenvwrapper venv](Windows)(上)
|
Ubuntu Python
一键打包,随时运行,Python3项目虚拟环境一键整合包的制作(Venv)
之前我们介绍了[如何使用嵌入式 Python3 环境给项目制作一键整合包](https://v3u.cn/a_id_328),在使用嵌入式 Python 环境时,通常是作为另一个应用程序的一部分,而Python3虚拟环境是为了在开发过程中隔离项目所需的 Python 环境。虚拟环境允许我们在同一台计算机上的不同项目中使用不同的 Python 版本和软件包,而不会相互干扰。 本次我们利用Python3自带的虚拟环境(venv)功能来给项目制作一键整合包。
一键打包,随时运行,Python3项目虚拟环境一键整合包的制作(Venv)

推荐镜像

更多