当前位置:   article > 正文

[545]Python版本管理工具(pyenv)和虚拟环境(pyvenv、virtualenv)

pyenv

Python版本管理工具(pyenv)

Github:https://github.com/pyenv/pyenv
https://github.com/pyenv-win/pyenv-win

pyenv 是 python 的多环境管理工具,可以安装多个版本的 python,并为全局单个应用设置指定版本。

pyenv 主要用来对 Python 解释器进行管理,可以管理系统上的多个版本的 Python 解释器。它的主要原理就是将新的解释器路径放在 PATH 环境变量的前面,这样新的 python 程序就“覆盖”了老的 python 程序,达到了切换解释器的目的。

pyenv的安装

下载 pyenv 压缩包

压缩包下载地址:https://github.com/pyenv-win/pyenv-win#readme
点击 code,再点击 Download ZIP 下载压缩包

解压压缩包

pyenv-win 压缩包解压到任意不带有中文的目录下,并点击箭头处复制目录路径
(这里有一点需要注意:需要复制文件夹内部的pyenv-win所在的目录,而不是外层目录)

配置环境变量

电脑搜索框内输入 “高级系统设置”,打开后,点击 环境变量

系统变量 中点 新建 ,将 PYENV 加入系统变量中,并配置上一步拷贝的目录,点击确认


配置 path 变量,在系统变量中找到 Path 这个变量,双击打开

点击新建 ,将这两行路径加进去:%PYENV%\bin%PYENV%\shims ,再点击确定

然后一层一层点击 确定 就好了

检测是否安装成功

在 cmd 窗口输入 pyenv,显示版本号等信息就是成功了

pyenv 的基本使用

查看可安装的Python版本
pyenv install --list
pyenv install -l
  • 1
  • 2
查看已安装版本Python、当前活动的Python版本

同时会在当前被激活的版本前添加星号。如果未激活任何版本Python,则默认在system行显示星号

# 查看已安装的Python版本
pyenv versions

# 显示当前活动的Python版本
pyenv version
  • 1
  • 2
  • 3
  • 4
  • 5
安装指定版本Python
pyenv install <version>
# 安装3.11.1版本的Python
pyenv install 3.11.1
  • 1
  • 2
  • 3

有时候会出现下载很慢的情况,这时候可以参考以下方案

手动安装
上图中可以看出下载源为 Mirror: https://www.python.org/ftp/python

  • 可以手动打开这个源地址,找到要下的版本号,找到需要的文件(以 3.10.3-amd64.exe 为例)
  • 将它下载完直接拖进 pyenv 的 install_cache 文件夹
  • 再执行上面的安装命令,即可安装对应的版本



正常安装的执行过程:

手动安装的执行过程:

从上面两张图也可以看出,安装的过程是先到 源地址 下载文件,丢进 install_cache 内,再进行 安装
我们相当于手动操作前面,直接进行安装

卸载指定版本Python
pyenv uninstall <version>
# 卸载3.11.1版本的Python
pyenv uninstall 3.11.1
  • 1
  • 2
  • 3
切换Python版本

1. 设置全局的Python版本

# 设置 全局的Python版本
pyenv global <version>

# 查看 全局的Python版本设置
pyenv global
  • 1
  • 2
  • 3
  • 4
  • 5

2. 设置当前目录下的Python版本

后续进入该目录后,会自动切换到此前设置的Python版本。具体地,其会在该目录下生成一个.python-version文件,用于记录设置的Python版本信息。显然,该设置的优先级高于全局的Python版本

# 设置 当前目录下的Python版本
pyenv local <version>

# 显示 当前目录下的Python版本设置
pyenv local

# 取消 当前目录下的Python版本设置
pyenv local --unset
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

3. 设置当前Shell会话的Python版本

该设置的优先级高于 基于目录设置的Python版本 和 全局的Python版本

# 设置 当前Shell会话的Python版本
pyenv shell <version>

# 查看 当前Shell会话的Python版本设置
pyenv shell

# 取消 当前Shell会话的Python版本设置
pyenv shell --unset
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

总结下,三种不同Python版本设置的优先级依次递减

shell > local > global
  • 1

参考:http://blog.csdn.net/weixin_42289080/article/details/127997003
https://zhuanlan.zhihu.com/p/664786383
https://www.cnblogs.com/doublexi/p/15786911.html


Python虚拟环境(pyvenv、virtualenv)

我们为什么需要使用虚拟环境?

Python的包(或模块)的下载保存非常独特;有时候可能会带来问题。

不同系统,Python模块的安装位置也不一样。例如,大多数系统模块安装在 sys.prefix 环境变量指定的目录中,以Mac OS X为例:

Python虚拟环境(virtualenv)

使用pip或easy_install安装的第三方模块通常安装在 site packages 目录:

Python虚拟环境(virtualenv)

下面举一个实际的例子来说明使用虚拟环境的好处。

假设你有两个Python项目-A和B,这两个项目都需要使用同一个第三方模块-tensorflow。如果这两个项目使用相同的tensorflow版本,也许不会有什么问题。

但是,当A和B项目使用不同的tensorflow版本时-A使用tensorflow 0.70版本;B使用tensorflow 0.80版本。由于Python导入模块不能区分模块版本,导致A、B不能使用tensorflow的不同版本,这在很多情况下是不能接受的。

使用虚拟环境的另一个好处是:保持开发环境的简洁、有序。

什么是Python虚拟环境?

Python虚拟环境可以为项目创建相互独立的开发环境,也就是你可以为每个项目安装各自使用依赖模块。

使用虚拟环境可以很好的解决上面A、B项目遇到的问题:为A、B项目分别创建虚拟环境,然后在各自的虚拟环境中安装不同的tensorflow版本。

使用虚拟环境需要借助virtualenv或pyvenv,它们的使用非常简单。

安装virtualenv、pyvenv

如果你使用Python 2,你可以使用pip安装virtualenv:

$  sudo pip install virtualenv
  • 1

如果你使用Python 3,它默认安装了pyvenv。

virtualenv和pyvenv的使用方法类似。由于pyvenv是较新的工具,本帖以它为例。

创建一个存放虚拟环境的目录:

$  mkdir  python-env
$  cd  python-env
  • 1
  • 2

创建一个虚拟环境:

$  pyvenv env_A
  • 1

上面命令在当前目录创建了env_A目录,目录结构:

├── bin
│   ├── activate
│   ├── activate.csh
│   ├── activate.fish
│   ├── easy_install
│   ├── easy_install-3.5
│   ├── pip
│   ├── pip3
│   ├── pip3.5
│   ├── python -> python3.5
│   ├── python3 -> python3.5
│   └── python3.5 -> /opt/local/Library/Frameworks/Python.framework/Versions/3.5/bin/python3.5
├── include
├── lib
│   └── python3.5
│       └── site-packages
└── pyvenv.cfg
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

使用创建的虚拟环境env_A:

$  source env/bin/activate
  • 1

提示符中包含:

(env_A)  $
  • 1

现在你通过pip安装的包都会安装这个虚拟环境中;导入(import)模块时也只能使用这个虚拟环境中的模块。

如果要退出env_A虚拟环境,执行:

(env_A)  $  deactivate
  • 1

虚拟环境的工作原理

主要就是操作环境变量。

Python在非虚拟环境下的路径:

$  which python
/usr/bin/python
  • 1
  • 2

激活虚拟环境再次查看Python路径:

$  source env/bin/activate
(env)  $  which python
/Users/snail/python-env/env_A/bin/python
  • 1
  • 2
  • 3

$PATH 环境变量在激活前后不一样了:

$ echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:
 
$ source env/bin/activate
(env) $ echo $PATH
/Users/snail/python-env/env_A/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

你可以看看 sys.prefix 和其他Python系统环境变量。

参考:http://blog.topspeedsnail.com/archives/5618

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/秋刀鱼在做梦/article/detail/886170
推荐阅读
相关标签
  

闽ICP备14008679号