Python虚拟环境安装与pyenv
Python环境安装PyenvPython虚拟环境:pyenvhttps://github.com/pyenv/pyenvpyenv是Python多版本管理工具,需要管理的部分:管理Python解释器管理Python版本管理Python的虚拟环境作用Pyenv是一个python虚拟环境的管理工具。它可以下载不同版本的Python,并设定Python解释器的版本...
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完全复制过去,不过并不推荐。
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)