Python虚拟环境安装与pyenv

Python环境安装

Pyenv

Python虚拟环境:pyenv

https://github.com/pyenv/pyenv

pyenv是Python多版本管理工具,需要管理的部分:

  • 管理Python解释器

  • 管理Python版本

  • 管理Python的虚拟环境

作用

​ Pyenv是一个python虚拟环境的管理工具。它可以下载不同版本的Python,并设定Python解释器的版本。它还可以将python版本与具体的路径绑定以实现python虚拟环境的设置。

安装pyenv

  • 安装git,并安装编译依赖:

    # yum -y install git
    
    # yum -y install gcc make patch gdbm-devel openssl-devel sqlite-devel readline-devel zlib-devel bzip2-devel
    
  • 创建python用户,注意:必须使用普通用户来编译安装,并使用pyenv,以防止和系统python版本冲突。

    # useradd python
    # passwd python
    
  • 使用python用户登录后安装pyenv

    $ curl -L https://github.com/pyenv/pyenv-installer/raw/master/bin/pyenv-installer | bash
    
  • 在python用户的.bash_rc追加

    export PATH="/home/python/.pyenv/bin:$PATH"
    eval "$(pyenv init -)"
    eval "$(pyenv virtualenv-init -)"
    

    登录时自动初始化pyenv,初始化virtual env.

Pyenv命令

列出可用python版本

[python@master ~]$ pyenv install -l
Available versions:
  2.1.3
  2.2.3
  2.3.7
  2.4.0

安装Python

[python@master ~]$ pyenv install 3.6.5 -v

安装对应的版本,会从网络上下载源码包编译安装,速度会比较慢。可离线安装。

离线安装

  • 提供三个文件到指定的目录
[python@master cache]$ ll
total 16812
-rw-r--r--. 1 python python 17212420 May 21  2019 Python-3.6.8.tar.xz
Python-3.6.8.tar.gz
Python-3.6.8.tgz
[python@master cache]$ pwd
/home/python/.pyenv/cache

  • 安装

    # pyenv install 3.6.5 -v 
    

    过程需要校验,编译

版本切换

[python@master ~]$ pyenv versions
* system (set by /home/python/.pyenv/version)
  3.6.8
  3.6.8/envs/v3.6.8
  v3.6.8

目前管理着2版本

global变量

设置全局版本为3.6.8

[python@master ~]$ pyenv global 3.6.8
[python@master ~]$ pyenv versions
  system
* 3.6.8 (set by /home/python/.pyenv/version)
  3.6.8/envs/v3.6.8
  v3.6.8

重新登录一次,重新读取bash_profile,依然使用3.6.8。影响面比较广,慎用。

修改回来:

[python@master ~]$ pyenv global system

shell变量

使用shell的形式,仅影响当前会话,不过会话丢失后配置也丢失。

[python@master ~]$ pyenv shell 3.6.8
[python@master ~]$ python -V
Python 3.6.8

local变量

设置为local的形式,将python版本和目录绑定。

[python@master ~]$ mkdir pydir
[python@master ~]$ cd pydir/
[python@master pydir]$ pyenv local 3.6.8
[python@master pydir]$ python -V
Python 3.6.8
[python@master pydir]$ mkdir web
[python@master pydir]$ cd web/
[python@master web]$ python -V
Python 3.6.8

而且子目录会继承环境设定。

多版本并存

再安装多一个版本,使得多版本共存。

[python@master ~]$ pyenv install 3.7.2 -v

但是这会带来问题:

  • 两个版本的python如果需要依赖包,那么不同版本所依赖的包或者包的版本可能会因冲突而无法共存。此时需要虚拟环境。
  • 同一个python版本下的不同用户,可能对开发环境的配置要求是不同的。
  • 为了使得用户所处的python环境各自独立,不影响到其他用户的环境配置,需要使用虚拟环境来进行环境隔离。

虚拟环境virtualenv

用于环境配置的隔离。

  • 设定版本衍生的虚拟版本名称

将python3.6.8版本设定一个虚拟环境名为v368

[python@master ~]$ pyenv virtualenv 3.6.8 v368
Looking in links: /tmp/tmpr0yeinpq
Requirement already satisfied: setuptools in /home/python/.pyenv/versions/3.6.8/envs/v368/lib/python3.6/site-packages (40.6.2)
Requirement already satisfied: pip in /home/python/.pyenv/versions/3.6.8/envs/v368/lib/python3.6/site-packages (18.1)

  • 安装好虚拟环境后,一般和某个目录绑定使用。

    [python@master pydir]$ pyenv local v368
    (v368) [python@master pydir]$
    

    如此只要进入pydir目录,就会使用虚拟环境了。

  • 虚拟环境实际上是3.6.8下的虚拟环境

    [python@master ~]$ pyenv versions
      system
    * 3.6.8 (set by PYENV_VERSION environment variable)
      3.6.8/envs/v368
    
    
  • 实际上,虚拟环境是一个链接文件。它直接链接到实际环境的某个路径

[python@master versions]$ ll
total 0
drwxr-xr-x. 7 python python 68 May 21  2019 3.6.8
lrwxrwxrwx. 1 python python 44 Mar 23 17:45 v368 -> /home/python/.pyenv/versions/3.6.8/envs/v368
lrwxrwxrwx. 1 python python 46 May 21  2019 v3.6.8 -> /home/python/.pyenv/versions/3.6.8/envs/v3.6.8
[python@master versions]$ pwd
/home/python/.pyenv/versions

  • 在真实环境中,开发时所使用的下载的包,都会放置到此目录下。这是真实环境下的路径。

/home/python/.pyenv/versions/3.6.8/lib/python3.6/site-packages

  • 而在虚拟环境中,下载的包会放置到此处

    /home/python/.pyenv/versions/3.6.8/envs/v368/lib/python3.6/site-packages

安装ipython,jupyter

安装ipython

python的解释器,使用python包管理器进行下载:

(v368) [python@master pydir]$ pip install ipython

默认到国外源下载,可修改为国内源:

[python@master ~]$ cd .pip/
[python@master .pip]$ cat pip.conf 
[global]
index-url = http://mirrors.aliyun.com/pypi/simple/

[install]
trusted-host=mirrors.aliyun.com

安装jupyter

  • web交互式笔记,可视化界面,可实现数据持久化保存。
(v368) [python@master pydir]$ pip install jupyter
  • 设置密码
(v368) [python@master pydir]$ jupyter notebook password jaywin
Enter password: 
Verify password: 

  • 启动
(v368) [python@master pydir]$ jupyter notebook --ip=0.0.0.0

让两个环境的包一致

  • 将当前虚拟环境中,pip的安装包和版本保存

    (v368) [python@master pydir]$ pip freeze > requirement
    
  • 将虚拟环境所有的包,移植到新的环境中。如此保证两个环境的包是一致的

    (v368) [python@master pydir]$ pip install -r requirement
    

也能将site-packages完全复制过去,不过并不推荐。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值