Python三神器之virtualenv&virtualenvwrapper

virtualenv是一个用于创建独立Python环境的工具,可以解决多项目之间依赖库版本不一致的问题,每个虚拟环境都是一个独立的Python环境,可以安装只属于这个环境的库。

virtualenvwrapper是virtualenv的一个扩展工具,它可以是我们在使用、管理虚拟环境时更简便、易用。

一. 安装

1. 安装virtualenv

[root@localhost bin]# pip3 install virtualenv
Collecting virtualenv
  Downloading virtualenv-15.1.0-py2.py3-none-any.whl (1.8MB)
    100% |████████████████████████████████| 1.8MB 770kB/s
Installing collected packages: virtualenv
Successfully installed virtualenv-15.1.0
[root@localhost bin]# ln -s /usr/local/python3/bin/virtualenv /usr/local/bin/virtualenv	#创建virtualenv的软连接
[root@localhost ~]# ln -s /usr/local/python3/bin/virtualenv-clone /usr/local/bin/virtualenv-clone #创建virtualenv-clone的软连接
[root@localhost ~]#

在系统目录/usr/local/bin下创建virtualenv和virtualenv-clone的软连接,是因为virtualenvwrapper会使用在(/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin)下的virtualenv和virtualenv-clone,所以必须保证virtualenv和virtualenv-clone的存在。

2. 安装virtualenvwrapper

[root@localhost ~]# pip3 install virtualenvwrapper
Collecting virtualenvwrapper
  Downloading virtualenvwrapper-4.8.1-py2.py3-none-any.whl
Collecting virtualenv-clone (from virtualenvwrapper)
  Downloading virtualenv-clone-0.2.6.tar.gz
Collecting stevedore (from virtualenvwrapper)
  Downloading stevedore-1.26.0-py2.py3-none-any.whl
Requirement already satisfied: virtualenv in /usr/local/python3/lib/python3.6/site-packages (from virtualenvwrapper)
Collecting pbr!=2.1.0,>=2.0.0 (from stevedore->virtualenvwrapper)
  Downloading pbr-3.1.1-py2.py3-none-any.whl (99kB)
    100% |████████████████████████████████| 102kB 497kB/s
Collecting six>=1.9.0 (from stevedore->virtualenvwrapper)
  Downloading six-1.10.0-py2.py3-none-any.whl
Installing collected packages: virtualenv-clone, pbr, six, stevedore, virtualenvwrapper
  Running setup.py install for virtualenv-clone ... done
Successfully installed pbr-3.1.1 six-1.10.0 stevedore-1.26.0 virtualenv-clone-0.2.6 virtualenvwrapper-4.8.1
[root@localhost ~]#

我们通常都是通过virtualenvwrapper去使用、管理我们的虚拟环境,所以这里只介绍virtualenvwrapper的用法。

二. 使用

1. 初始化

1.1. shell初始化(单次有效,shell关闭后需重新初始化)

[root@localhost ~]# export WORKON_HOME=~/Envs		#设置环境变量WORKON_HOME
[root@localhost ~]# mkdir -p $WORKON_HOME		#创建环境变量WORKON_HOME指定的目录
[root@localhost ~]# echo $WORKON_HOME			#显示环境变量WORKON_HOME的值
/root/Envs
[root@localhost ~]# export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3	#设置环境变量VIRTUALENVWRAPPER_PYTHON
[root@localhost ~]# echo $VIRTUALENVWRAPPER_PYTHON	#显示环境变量VIRTUALENVWRAPPER_PYTHON的值
/usr/bin/python3
[root@localhost ~]# source /usr/local/python3/bin/virtualenvwrapper.sh
virtualenvwrapper.user_scripts creating /root/Envs/premkproject
virtualenvwrapper.user_scripts creating /root/Envs/postmkproject
virtualenvwrapper.user_scripts creating /root/Envs/initialize
virtualenvwrapper.user_scripts creating /root/Envs/premkvirtualenv
virtualenvwrapper.user_scripts creating /root/Envs/postmkvirtualenv
virtualenvwrapper.user_scripts creating /root/Envs/prermvirtualenv
virtualenvwrapper.user_scripts creating /root/Envs/postrmvirtualenv
virtualenvwrapper.user_scripts creating /root/Envs/predeactivate
virtualenvwrapper.user_scripts creating /root/Envs/postdeactivate
virtualenvwrapper.user_scripts creating /root/Envs/preactivate
virtualenvwrapper.user_scripts creating /root/Envs/postactivate
virtualenvwrapper.user_scripts creating /root/Envs/get_env_details
[root@localhost ~]#

其中设置环境变量VIRTUALENVWRAPPER_PYTHON是因为我的系统安装了两个版本的Python,默认路径/usr/bin/python是Python2的目录,而virtualenvwrapper我是用Python3安装的,所以要手动讲默认的VIRTUALENVWRAPPER_PYTHON变量修改成Python3的目录,如果是使用默认版本的Python安装的virtualenvwrapper可以省略此步骤。

1.2. shell启动文件初始化(永久有效,shell启动时自动初始化)

在~/.bashrc文件最后添加以下语句,保存后shell下执行source ~/.bashrc。~/.bashrc文件是当前用户的shell启动配置文件,如果想要修改全局的shell,可以修改/etc/bashrc文件。

export WORKON_HOME=$HOME/.virtualenvs
export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3
export PROJECT_HOME=$HOME/Devel
source /usr/local/python3/bin/virtualenvwrapper.sh

2. 新建虚拟环境

[root@localhost ~]# mkvirtualenv env1
Using base prefix '/usr/local/python3'
New python executable in /root/.virtualenvs/env1/bin/python3.6
Also creating executable in /root/.virtualenvs/env1/bin/python
Installing setuptools, pip, wheel...done.
virtualenvwrapper.user_scripts creating /root/.virtualenvs/env1/bin/predeactivate
virtualenvwrapper.user_scripts creating /root/.virtualenvs/env1/bin/postdeactivate
virtualenvwrapper.user_scripts creating /root/.virtualenvs/env1/bin/preactivate
virtualenvwrapper.user_scripts creating /root/.virtualenvs/env1/bin/postactivate
virtualenvwrapper.user_scripts creating /root/.virtualenvs/env1/bin/get_env_details
(env1) [root@localhost etc]# workon
env1
(env1) [root@localhost etc]#

3. 新建临时的虚拟环境(退出环境后自动删除)

[root@localhost ~]# mktmpenv
Using base prefix '/usr/local/python3'
New python executable in /root/.virtualenvs/tmp-46e87484b9f3cfc/bin/python3.6
Also creating executable in /root/.virtualenvs/tmp-46e87484b9f3cfc/bin/python
Installing setuptools, pip, wheel...done.
virtualenvwrapper.user_scripts creating /root/.virtualenvs/tmp-46e87484b9f3cfc/bin/predeactivate
virtualenvwrapper.user_scripts creating /root/.virtualenvs/tmp-46e87484b9f3cfc/bin/postdeactivate
virtualenvwrapper.user_scripts creating /root/.virtualenvs/tmp-46e87484b9f3cfc/bin/preactivate
virtualenvwrapper.user_scripts creating /root/.virtualenvs/tmp-46e87484b9f3cfc/bin/postactivate
virtualenvwrapper.user_scripts creating /root/.virtualenvs/tmp-46e87484b9f3cfc/bin/get_env_details
This is a temporary environment. It will be deleted when you run 'deactivate'.
(tmp-46e87484b9f3cfc) [root@localhost tmp-46e87484b9f3cfc]#

4. 列出所有环境

[root@localhost ~]# lsvirtualenv
env1
====




tmp-46e87484b9f3cfc
===================




[root@localhost ~]#

5. 查看指定环境的详情

[root@localhost ~]# showvirtualenv env1


[root@localhost ~]#

6. 删除指定环境

[root@localhost ~]# rmvirtualenv env1
Removing env1...
[root@localhost ~]#

删除环境之前必须deactivate待删除的环境。mktmpenv创建的临时虚拟环境,不需要手动删除,在deactivate后其会自动被删除。

7. 复制虚拟环境(支持得不是很好,谨慎使用)

[root@localhost ~]# cpvirtualenv env1 env2 #使用到virtualenv-clone
Copying env1 as env2...
(env2) [root@localhost ~]#

8. 所有虚拟环境下执行指定命令

[root@localhost ~]# allvirtualenv pip install -U pip
env1
====
Requirement already up-to-date: pip in ./lib/python3.6/site-packages


env2
====
Requirement already up-to-date: pip in ./lib/python3.6/site-packages


[root@localhost ~]#

9. 列出所有虚拟环境或切换虚拟环境

[root@localhost ~]# workon	#列出所有虚拟环境
env1
env2
[root@localhost ~]# workon env1		#切换至虚拟环境env1
(env1) [root@localhost ~]#

10. 从当前虚拟环境中退回到系统环境(使用系统中的python)

(env1) [root@localhost ~]# deactivate
[root@localhost ~]#

11. 改变当前的工作目录至当前虚拟环境$VIRTUAL_ENV的指定目录或其子目录

(env1) [root@localhost ~]# pwd
/root
(env1) [root@localhost ~]# cdvirtualenv
(env1) [root@localhost env1]# pwd
/root/.virtualenvs/env1
(env1) [root@localhost env1]# cd ~
(env1) [root@localhost ~]# cdvirtualenv bin
(env1) [root@localhost bin]# pwd
/root/.virtualenvs/env1/bin
(env1) [root@localhost bin]#

12. 改变当前的工作目录至当前虚拟环境$VIRTUAL_ENV下的site-packages目录或site-packages的子目录

(env1) [root@localhost ~]# pwd
/root
(env1) [root@localhost ~]# cdsitepackages
(env1) [root@localhost site-packages]# pwd
/root/.virtualenvs/env1/lib/python3.6/site-packages
(env1) [root@localhost site-packages]# cd ~
(env1) [root@localhost ~]# cdsitepackages pip
(env1) [root@localhost pip]# pwd
/root/.virtualenvs/env1/lib/python3.6/site-packages/pip
(env1) [root@localhost pip]#

13. 列出当前的虚拟环境site-packages目录下的内容

(env1) [root@localhost ~]# lssitepackages
easy_install.py  pip-9.0.1.dist-info  __pycache__  setuptools-36.4.0.dist-info  wheel-0.30.0.dist-info
pip              pkg_resources        setuptools   wheel
(env1) [root@localhost ~]# cdsitepackages
(env1) [root@localhost site-packages]# pwd
/root/.virtualenvs/env1/lib/python3.6/site-packages
(env1) [root@localhost site-packages]# ls
easy_install.py  pip-9.0.1.dist-info  __pycache__  setuptools-36.4.0.dist-info  wheel-0.30.0.dist-info
pip              pkg_resources        setuptools   wheel
(env1) [root@localhost site-packages]#













  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值