本文介绍介绍3种方式使用虚拟环境
- python自带模块venv
- pyenv (重点)
- pipenv
python自带venv
快速创建和python同版本虚拟环境,不同项目那环境报依赖不受影响,基本够用。
1python3.6 -m venv .virtualenv
2source .virtualenv/bin/active
pyenv安装
centos 6.9环境
安装Python编译依赖
1yum -y install gcc make patch gdbm-devel openssl-devel sqlite-devel readline-devel zlib-devel bzip2-devel
创建用户python
1useradd python
2passwd python
使用python用户登录后安装Pyenv
1curl -L https://github.com/pyenv/pyenv-installer/raw/master/bin/pyenv-installer | bash
2#下载的 pyenv-installer 是一个shell脚本。
注意:
-
如果curl出现 curl: (35) SSL connect error ,是nss版本低的问题,更新它。 可能需要
配置一个有较新包的yum源
1[updates]
2name=CentOS-Updates
3baseurl=https://mirrors.aliyun.com/centos/6.9/os/x86_64
4gpgcheck=0
5
6#然后更新nss
7$ yum update nss
在python用户的~/.bash_profile中追加
1export PATH="/home/python/.pyenv/bin:$PATH"
2eval "$(pyenv init -)"
3eval "$(pyenv virtualenv-init -)"
4source ~/.bash_profile # 这样当用户启动的时候,会执行用户的.bash_profile中的脚本,就会启动pyenv。 安装好的pyenv就在~/.pyenv中
pyenv使用
1 python --version
2 python -V
3 echo $PATH
4# 可以看到当前系统Python路径
安装指定版本python
1pyenv help install
2pyenv install --list # 列出所有可用版本
在线安装指定版本 这样的安装可能较慢,为了 提速,可是选用cache方法。 使用缓存方式安装 在~/.pyenv目录下,新建cache目录,放入下载好的待安装版本的文件。 不确定 要哪一个文件,把下载的3个文件都放进去。
1 pyenv install 3.5.3 -v #安装3.5.3版本
2 pyenv install 3.6.4 #安装3.6.4版本
pyenv的python版本控制
1pyenv version # version 显示当前的python版本
2pyenv versions # versions 显示所有可用的python版本,和当前版本
global 全局设置
1pyenv global 3.5.3
可以看到所有受pyenv控制的窗口中都是3.5.3的 python版本了。 这里用global是作用于非root用户python用户上, 如果是root用户安装,请不要使 用global,否则影响太大。比如,这里使用的CentOS6.9就是Python2.6,使用了global就成了3.x, 会带来很不好的影响。
1pyenv global system #全局使用系统的版本
shell 会话设置 影响只作用于当前会话
1pyenv shell 3.5.3
local本地设置(目录)
使用pyenvlocal设置从当前工作目录开始向下递归都继承这个设置。
1 pyenv local 3.5.3
演示
设置好$ pyenv global 3.5.3 后 退出进入
virtualenv 虚拟环境设置
为什么要使用虚拟环境? 因为刚才使用的Python环境都是一个公共的空间,如果多个项目使用不同 Python版本开发,或者使用不同的Python版本部署运行,或者使用同样的版本开发的但不同项目使 用了不同版本的库,等等这些问题都会带来冲突。最好的解决办法就是每一个项目独立运行自己的 “独立小环境”中。 使用插件,在plugins/pyenv-virtualenv中
1 pyenv virtualenv 3.5.3 crmao353
使用python 3.5.3版本创建出一个独立的虚拟空间。
可以在版本列表中存在,就和3.5.3是一样的,就是一个版本了。 真实目录在~/.pyenv/versions /下,以后只要使用这个虚拟版本,包就会按照到这些对应的目录下去,而不是使用3.5.3。
pipenv使用
1pipenv 虚拟环境 和项目绑定。
2pip3.6 install pipenv
3cp /Library/Frameworks/Python.framework/Versions/3.6/bin/pipenv /usr/local/bin/pipenv
4mkdir ~/code/crmao
5cd ~/code/crmao
6pipenv install . #安装虚拟环境
7pipenv shell #进入虚拟环境
8exit #退出虚拟环境
9
10#安装包
11pipenv install flask
12pipenv install request
13
14#卸载包
15pipenv uninstall flask
16
17#打印包依赖
18pipenv graph
19
20(crmao) bash-3.2$ pipenv graph
21Flask==1.1.1
22 - click [required: >=5.1, installed: 7.0]
23 - itsdangerous [required: >=0.24, installed: 1.1.0]
24 - Jinja2 [required: >=2.10.1, installed: 2.10.3]
25 - MarkupSafe [required: >=0.23, installed: 1.1.1]
26 - Werkzeug [required: >=0.15, installed: 0.16.0]
27
28 pipenv --venv
29 查看虚拟环境目录
30 /Users/mac/.local/share/virtualenvs/crmao-Zixx_9wl
31
32pipenv --python 3.6 #指定某一python版本创建环境
pip 使用
pip 是Python的包管理工具,3.x的版本直接带了,2.x的没自带可以直接使用。 和yum一样为了使用国内镜像, 如下配置。 Linux系统 配置文件在~/.pip/pip.conf
1mkdir ~/.pip
2vim ~/.pip/pip.conf # 内容如下
1[global]
2index-url=https://mirrors.aliyun.com/pypi/simple/
3trusted-host=mirrors.aliyun.com
导出包
虚拟环境的好处就在于和其他项目运行环境隔离。每一个独立的环境都可以使用pip命令导出已经安 装的包,在另一个环境中安装这些包。
1(crmao353) [python@node web]$ pip freeze > requirement
2(crmao353) [python@node web]$ mkdir ~/crmao/projects/pro1
3(crmao353) [python@node web]$ cd ~/crmao/projects/pro1
4[python@node pro1]$ pyenv install --list
5[python@node pro1]$ pyenv install 3.6.4
6[python@node pro1]$ pyenv virtualenv 3.6.4 crmao364
7[python@node pro1]$ pyenv local crmao364
8(crmao364) [python@node pro1]$ mv ../web/requirement ./
9(crmao364) [python@node pro1]$ pip install -r requirement
指定源安装
1pip install Flask -i http://pypi.douban.com/simple -- trusted-host pypi.douban.com
2pip install -r requirements.txt -i http://pypi.douban.com/simple --trusted-host pypi.douban.com