1. 什么是虚拟环境?
虚拟环境的意义,就如同 虚拟机 一样,它可以实现不同环境中Python依赖包相互独立,互不干扰。
举个例子吧。
假设我们的电脑里有两个项目,他们都用到同一个第三方包,本来一切都顺利。但是由于某种原因,项目B由于某些原因要使用这个第三方包的一些新特性(新版本才有),而如果就这样贸然升级了,对项目A的影响我们无法评估,这个时候我们就特别需要有一种解决方案可以让项目A和B,处于两个不同的Python环境中。互不影响。
为了方便大家对虚拟环境有个认识,我列举了下其优点:
- 使不同应用开发环境独立
- 环境升级不影响其他应用,也不会影响全局的python环境
- 可以防止系统中出现包管理混乱和版本的冲突
市场上管理 Python 版本和环境的工具有很多,这里列举几个:
- p:非常简单的交互式 python 版本管理工具。
- pyenv:简单的 Python 版本管理工具。
- Vex:可以在虚拟环境中执行命令。
- virtualenv:创建独立 Python 环境的工具。
- virtualenvwrapper:virtualenv 的一组扩展。
工具很多,但个人认为最好用的,当属 virtualenvwrapper,推荐大家也使用。
2. virtualenv
由于 virtualenvwrapper 是 virtualenv 的一组扩展,所以如果要使用 virtualenvwrapper,就必须先安装 virtualenv。
安装基本使用*
由于virtualenv创建虚拟环境是在当前环境下创建的。所以我们要准备一个专门存放虚拟环境的目录。(以下操作在Linux在完成,windows相对简单,请自行完成,有不明白的请微信与我联系。)
创建
# 准备目录并进入 $ mkdir -p /home/wangbm/Envs $ cd !$ # 创建虚拟环境(按默认的Python版本) # 执行完,当前目录下会有一个my_env01的目录 $ virtualenv my_env01 # 你也可以指定版本 $ virtualenv -p /usr/bin/python2.7 my_env01 $ virtualenv -p /usr/bin/python3.6 my_env02 # 你肯定觉得每次都要指定版本,相当麻烦吧? # 在Linux下,你可以把这个选项写进入环境变量中 $ echo "export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python2.7" ~/.bashrc
进入/退出
$ cd /home/wangbm/Envs # 进入 $ source my_env01/bin/activate # 退出 $ deactivate
删除
删除虚拟环境,只需删除对应的文件夹就行了。并不会影响全局的Python和其他环境。
$ cd /home/wangbm/Envs $ rm -rf my_env01
注意:
创建的虚拟环境,不会包含原生全局环境的第三方包,其会保证新建虚拟环境的干净。
如果你需要和全局环境使用相同的第三方包。可以使用如下方法:
# 导出依赖包 $ pip freeze > requirements.txt # 安装依赖包 $ pip install -r requirements.txt
3. virtualenvwrapper
virtualenv 虽然已经相当好用了,可是功能还是不够完善。
你可能也发现了,要进入虚拟环境,必须得牢记之前设置的虚拟环境目录,如果你每次按规矩来,都将环境安装在固定目录下也没啥事。但是很多情况下,人是会懒惰的,到时可能会有很多个虚拟环境散落在系统各处,你将有可能忘记它们的名字或者位置。
还有一点,virtualenv 切换环境需要两步,退出 -> 进入。不够简便。
为了解决这两个问题,virtualenvwrapper就诞生了。
安装
# 安装 - Linux pip install virtualenvwrapper # 安装 - Windows pip install virtualenvwrapper-win
配置
先find一下virtualenvwrapper.sh文件的位置
find / -name virtualenvwrapper.sh # /usr/bin/virtualenvwrapper.sh
若是 windows 则使用everything 查找 virtualenvwrapper.bat 脚本
D:\Program Files (x86)\Python38-32\Scripts\virtualenvwrapper.bat
在~/.bashrc 文件新增配置
export WORKON_HOME=$HOME/.virtualenvs export PROJECT_HOME=$HOME/workspace export VIRTUALENVWRAPPER_SCRIPT=/usr/bin/virtualenvwrapper.sh source /usr/bin/virtualenvwrapper.sh
若是 windows 则新增环境变量:WORKON_HOME
基本语法:
mkvirtualenv [-a project_path] [-i package] [-r requirements_file] [virtualenv options] ENVNAME
常用方法
# 创建 $ mkvirtualenv my_env01 # 进入 $ workon my_env01 # 退出 $ deactivate # 列出所有的虚拟环境,两种方法 $ workon $ lsvirtualenv # 在虚拟环境内直接切换到其他环境 $ workon my_env02 # 删除虚拟环境 $ rmvirtualenv my_env01
其他命令
# 列出帮助文档 $ virtualenvwrapper # 拷贝虚拟环境 $ cpvirtualenv ENVNAME [TARGETENVNAME] # 在所有的虚拟环境上执行命令 $ allvirtualenv pip install -U pip # 删除当前环境的所有第三方包 $ wipeenv # 进入到当前虚拟环境的目录 $ cdsitepackages # 进入到当前虚拟环境的site-packages目录 $ cdvirtualenv # 显示 site-packages 目录中的内容 $ lssitepackages
更多内容,可查看 官方文档
https://virtualenvwrapper.rea...
4. 实战演示
以上内容,是一份使用指南。接下来,一起来看看,如何在项目中使用虚拟环境。
如何使用在我们的开发中使用我们的虚拟环境呢
通常我们使用的场景有如下几种
- 交互式中
- PyCharm中
- 工程中
接下来,我将一一展示。
4.1 交互式中
先对比下,全局环境和虚拟环境的区别,全局环境中有requests包,而虚拟环境中并未安装。
当我们敲入 workon my_env01,前面有my_env01的标识,说明我们已经处在虚拟环境中。后面所有的操作,都将在虚拟环境下执行。
4.2 工程项目中
我们的工程项目,都有一个入口文件,仔细观察,其首行可以指定Python解释器。
倘若我们要在虚拟环境中运行这个项目,只要更改这个文件头部即可。
现在我还是以,import requests 为例,来说明,是否是在虚拟环境下运行的,如果是,则和上面一样,会报错。
文件内容:
#!/root/.virtualenvs/my_env01/bin/python import requests print "ok"
运行前,注意添加执行权限。
$ chmod +x ming.py
好了。来执行一下
$ ./ming.py
发现和预期一样,真的报错了。说明我们指定的虚拟环境有效果。
4.3 PyCharm中
点击 File - Settings - Project - Interpreter
点击小齿轮。如图点击添加,按提示添加一个虚拟环境。然后点 OK 就可以使用这个虚拟环境,之后的项目都会在这个虚拟环境下运行。
以上就是Python 中使用 virtualenv 管理虚拟环境的方法的详细内容,更多关于python 用virtualenv 管理虚拟环境的资料请关注其它相关文章!
《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线
暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。
艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。
《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。
更新日志
- 中国武警男声合唱团《辉煌之声1天路》[DTS-WAV分轨]
- 紫薇《旧曲新韵》[320K/MP3][175.29MB]
- 紫薇《旧曲新韵》[FLAC/分轨][550.18MB]
- 周深《反深代词》[先听版][320K/MP3][72.71MB]
- 李佳薇.2024-会发光的【黑籁音乐】【FLAC分轨】
- 后弦.2012-很有爱【天浩盛世】【WAV+CUE】
- 林俊吉.2012-将你惜命命【美华】【WAV+CUE】
- 晓雅《分享》DTS-WAV
- 黑鸭子2008-飞歌[首版][WAV+CUE]
- 黄乙玲1989-水泼落地难收回[日本天龙版][WAV+CUE]
- 周深《反深代词》[先听版][FLAC/分轨][310.97MB]
- 姜育恒1984《什么时候·串起又散落》台湾复刻版[WAV+CUE][1G]
- 那英《如今》引进版[WAV+CUE][1G]
- 蔡幸娟.1991-真的让我爱你吗【飞碟】【WAV+CUE】
- 群星.2024-好团圆电视剧原声带【TME】【FLAC分轨】