Python虚拟环境使用

Python

一、什么是虚拟环境?

Python 虚拟环境的主要目的是为了给不同的工程创建互相独立的运行环境。在虚拟环境下,每一个工程都有自己的依赖包,而与其它的工程无关。不同的虚拟环境中同一个包可以有不同的版本。并且,虚拟环境的数量没有限制,我们可以轻松地用 virtualenv 或者 pyenv 等工具来创建多个虚拟环境。

Python 中有 virtualenvpy venv 虚拟环境,简单使用的话 Python 自带的虚拟环境也是挺好的,自带虚拟环境不需要安装。

二、虚拟环境是如何工作的?

在激活虚拟环境后,python 可执行文件的路径变成了当前环境目录下的路径,并且 $PATH 也发生了变化:

$ echo $PATH/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:
$ source env/bin/activate(env) 
$ echo $PATH/Users/michaelherman/python-virtual-environments/env/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:

虚拟环境下的bin目录排在了 $PATH 的最前面。这意味着,用户在命令行中执行 python 的时候,将率先使用虚拟环境下的可执行文件,而不是系统默认的。

虚拟环境下的 python 可执行文件与系统默认的有什么不同呢?

事实上,上面提到的 python 可执行文件之间并没有什么不同,但是它们所在的位置至关重要。在Python 启动的时候,它会获取自身所在的路径。然后这一路径(bin的上一级)被设置到 sys.prefixsys.exec_prefix 之中。在搜索第三方的 site-packages 时,搜索目录是 sys.prefix 所指向的路径下的 lib/pythonX.X/site-packages/,其中 X.X 是 Python 的版本。

Python 是如何找到虚拟环境下的第三方库的呢?

在前面的例子中,python 文件所在路径为 /Users/michaelherman/python-virtual-environments/env/bin,因此 sys.prefix 会被设为 /Users/michaelherman/python-virtual-environments/env ,从而 site-packages 的路径就变成了 /Users/michaelherman/python-virtual-environments/env/lib/pythonX.X/site-packages 。最后,这一路径被存储在 sys.path 数组中,其中包含着所有包的引用来源。

三、虚拟环境的安装使用

py venv 虚拟环境使用

  1. 创建虚拟环境
    命令格式:python -m venv 虚拟环境名称
    进入对应目录后运行:

    python -m venv .venv
    

    虚拟环境就安装到当前目录下的 .venv 目录下了。

  2. 进入虚拟环境

    .venv\scripts\activate.bat        // Windows 下
    source .venv/bin/activate         // Linux 下
    
  3. 退出虚拟环境

    deactivate
    
  4. 虚拟环境中安装库
    刚创建的虚拟环境是干净的,需要自己安装需要的第三方库。如安装PyQt5:

    pip install PyQt5
    

    虚拟环境是独立的,在进入虚拟环境后可用 pip freeze 查看当前环境中安装了那些第三方库。

virtualenv 虚拟环境使用

  1. 安装 virtualenv
pip install virtualenv
  1. 创建虚拟环境
    命令格式:virtualenv 虚拟环境名称
    进入对应目录后运行:

    virtualenv .venv
    

    虚拟环境就安装到当前目录下的 .venv 目录下了。

  2. 进入虚拟环境

    .venv\scripts\activate.bat        // Windows 下
    source .venv/bin/activate         // Linux 下
    
  3. 退出虚拟环境

    deactivate
    
  4. 虚拟环境中安装库
    刚创建的虚拟环境是干净的,需要自己安装需要的第三方库。如安装PyQt5:

    pip install PyQt5
    

    虚拟环境是独立的,在进入虚拟环境后可用 pip freeze 查看当前环境中安装了那些第三方库。

四、管理虚拟环境

通过以上方式即可创建一个虚拟环境,但是这种方式需要记住每一个虚拟环境的目录显得太麻烦,虚拟环境可以通过一些工具来管理,从而使用起来更加方便,这里推荐 virtualenvwrapper

  1. 安装 virtualenvwrapper
    pip install virtualenvwrapper-win         // Windows 下
    pip install virtualenvwrapper             // Linux 下
    
  1. 输入 workon 命令查看是否可用
    // 输出结果如下表示成功
    Pass a name to activate one of the following virtualenvs:
    ==============================================================================
    找不到文件
    
  1. 使用 virtualenvwrapper 创建虚拟环境
    命令格式:mkvirtualenv 虚拟环境名称

    mkvirtualenv testenv
    

    注:Windows 下虚拟环境默认放在 C:\Users\Administrator\Envs 目录中。

  2. 删除虚拟环境
    命令格式:rmvirtualenv 虚拟环境名称

    rmvirtualenv testenv
    
  1. 进入虚拟环境
    命令格式:workon 虚拟环境名称
    workon testenv
    
  1. 退出虚拟环境
    deactivate
    
  1. 常用命令列表
    # 列举所有的虚拟环境
    lsvirtualenv
    
    # 显示所有的虚拟环境包
    lssitepackages
      
    # 导航到当前激活的虚拟环境的目录中,比如说这样就能够浏览它的 site-packages
    cdvirtualenv
    
    # 和上面的类似,但是是直接进入到 site-packages 目录中
    cdsitepackages
    
    # 这会在 ~/Envs 中创建 my_django115 文件夹
    mkvirtualenv my_django115
      
    # 启动/切换虚拟环境
    workon my_django115
    
    # 退出虚拟环境
    deactivate
      
    # 删除虚拟环境
    rmvirtualenv my_django115
    
  1. 修改虚拟环境默认存放路径
    Windows 下:
    找到系统环境变量,添加变量名为 WORKON_HOME 值为指定路径即可。如图(Win):

    WORKON_HOME

    Linux下:
    设置 linux 的用户个人配置文件 ~/.bashrc 添加如下内容:

    WORKON_HOME=~/Envs      #设置virtualenv的目录,以后自动下载的虚拟环境全都放这里
    VIRTUALENVWRAPPER_VIRTUALENV_ARGS='--no-site-packages'       #添加virtualenvwrapper的参数,生成干净隔绝的环境
    VIRTUALENVWRAPPER_PYTHON=/opt/python/bin/python3     #指定python解释器的本体(路径为python3安装的目录)
    source /opt/python/bin/virtualenvwrapper.sh         #执行virtualenvwrapper安装脚本(路径需要根据自己的安装位置进行配置)
    

    配置完成后重新登录配置生效。
    如图(图片来源于互联网):

    workon_home_linux

参考文章:
1.python虚拟环境的安装和配置-virtualenv,virtualenvwrapper_Mrical的博客-CSDN博客
2.Linux下的快速配置虚拟环境virtualenvwrapper - 柳帅 - 博客园

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,839评论 6 482
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,543评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 153,116评论 0 344
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,371评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,384评论 5 374
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,111评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,416评论 3 400
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,053评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,558评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,007评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,117评论 1 334
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,756评论 4 324
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,324评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,315评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,539评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,578评论 2 355
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,877评论 2 345

推荐阅读更多精彩内容