Centos7使用virtualenv创建python开发环境虚拟环境详解

如果在同一台机器上有多个环境在同时执行开发任务,这些环境往往存在版本差异性,例如环境1需要python2.7+Django1.1,环境2需要python3.6+Django2.2,这时候再来一个环境3需要python3.7+Django2.1就头大了。解决这种版本差异的最好方法就是利用虚拟环境相互隔离。这一篇我们就一起来对比下三种不同的虚拟方式然后重点看看专为python打造的虚拟环境virtualenv。

我是T型人小付,一位坚持终身学习的互联网从业者。喜欢我的博客欢迎在csdn上关注我,如果有问题欢迎在底下的评论区交流,谢谢。

三种虚拟方式

目前在一台机器上虚拟多个环境的方式有下面几种

  1. workstation为代表的虚拟机
    这种方式可以完整虚拟出一整套的设备,从cpu到网口到操作系统,应有尽有。这种方式功能强大,但是占用资源也多,每次启动都得花好久。例如想在Windows中安装一套Linux环境来长期使用,可以考虑这种方法。
  2. docker为代表的容器
    为了解决虚拟机庞大笨重的问题,容器技术应运而生。每个容器有自己的特定功能,例如Django的镜像可以生成一个Django容器,Redis镜像生成Redis容器。多个容器配合使用,组成一整套服务。容器的优点就是轻量,而且因为有镜像存在,不用担心容器挂掉的风险。
  3. virtualenv
    有没有比容器更轻量的方式呢?有。virtualenv这种专门为python设计的虚拟环境,只能用于python开发,没有别的功能。为每个项目建立自己单独的根目录,初始化以后所有的第三方依赖包都是安装在自己项目的根目录下,不用担心不同项目互相干扰的问题。是python开发的首选。

安装virtualenv

virtualenv也是一个python第三方包,安装了python以后直接利用pip命令安装即可

[fuhx@testmachine ~]$ pip install virtualenv

创建虚拟环境

直接运行virtualenv xxx即可创建一个虚拟环境

[fuhx@testmachine python_projects]$ virtualenv test
created virtual environment CPython3.7.1.final.0-64 in 328ms
  creator CPython3Posix(dest=/home/fuhx/python_projects/test, clear=False, global=False)
  seeder FromAppData(download=False, pip=latest, setuptools=latest, wheel=latest, via=copy, app_data_dir=/home/fuhx/.local/share/virtualenv/seed-v1)
  activators BashActivator,CShellActivator,FishActivator,PowerShellActivator,PythonActivator,XonshActivator
[fuhx@testmachine python_projects]$

virtualenv会创建一个与环境名字相同的文件夹,这个文件夹就是这个虚拟环境的根目录

[fuhx@testmachine python_projects]$ cd test
[fuhx@testmachine test]$ ll
total 4
drwxrwxr-x 2 fuhx fuhx 320 Feb 24 19:02 bin
drwxrwxr-x 3 fuhx fuhx  23 Feb 24 19:02 lib
-rw-rw-r-- 1 fuhx fuhx 264 Feb 24 19:02 pyvenv.cfg
[fuhx@testmachine test]$

和python相关的二进制文件,例如python,pip都在bin目录下,和虚拟环境相关的操作命令也在bin目录下

[fuhx@testmachine test]$ tree bin
bin
├── activate
├── activate.csh
├── activate.fish
├── activate.ps1
├── activate_this.py
├── activate.xsh
├── easy_install
├── easy_install3
├── easy_install-3.7
├── pip
├── pip3
├── pip-3.7
├── python -> /home/fuhx/anaconda3/bin/python
├── python3 -> python
├── python3.7 -> python
├── wheel
├── wheel3
└── wheel-3.7

0 directories, 18 files
[fuhx@testmachine test]$

等虚拟环境启动以后这个bin目录会被加到PATH变量的最前面,这样运行python和pip的时候就是从虚拟环境中运行了。

可以看出这里的python命令是本地机器的一个链接,这里是python3,如果我想在这个环境里面采用python2该怎么办呢?

在创建虚拟环境的时候利用-p去指定python解释器,不过前提条件是本机已经安装了该解释器

[fuhx@testmachine python_projects]$ virtualenv -p /home/fuhx/anaconda2/bin/python test

启动虚拟环境

跑一下source bin/activate即可启动虚拟环境,注意因为要在本shell中跑,只能用source不能用sh

[fuhx@testmachine test]$ source bin/activate
(test) [fuhx@testmachine test]$

可以看到最前面有一个小括号,里面是虚拟环境的名字,这样就成功进入了虚拟环境。

我们来验证下

(test) [fuhx@testmachine test]$ which pip
~/python_projects/test/bin/pip
(test) [fuhx@testmachine test]$ which python
~/python_projects/test/bin/python
(test) [fuhx@testmachine test]$

可以看出已经从虚拟环境中运行python了。

如果我们检测下第三方包,发现没有任何第三方包

(test) [fuhx@testmachine test]$ pip freeze
(test) [fuhx@testmachine test]$

如果想把本机的已安装第三方包带入虚拟环境,可以在创建的时候加一个参数

[fuhx@testmachine python_projects]$ virtualenv --system-site-packages test1

这个时候再检查第三方包就和本机一样了

退出关闭虚拟环境

直接在虚拟环境中运行deactivate退出虚拟环境,前面的小括号消失

(test) [fuhx@testmachine test]$ deactivate
[fuhx@testmachine test]$

如果要删除该虚拟环境,直接删除文件夹即可

[fuhx@testmachine test]$ cd ..
[fuhx@testmachine python_projects]$ rm -rf test
[fuhx@testmachine python_projects]$
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值