Python虚拟环境Virtualenv使用教程

作者:junjie 时间:2022-04-15 00:22:21 

virtualenv用于创建独立的Python环境,多个Python相互独立,互不影响,它能够:
1. 在没有权限的情况下安装新套件
2. 不同应用可以使用不同的套件版本
3. 套件升级不影响其他应用

安装


sudo apt-get install python-virtualenv

使用方法
[code]
virtualenv [虚拟环境名称]

如,创建**ENV**的虚拟环境


virtualenv ENV


默认情况下,虚拟环境会依赖系统环境中的site packages,就是说系统中已经安装好的第三方package也会安装在虚拟环境中,如果不想依赖这些package,那么可以加上参数 --no-site-packages建立虚拟环境


virtualenv --no-site-packages [虚拟环境名称]


启动虚拟环境


cd ENV
source ./bin/activate


注意此时命令行会多一个(ENV),ENV为虚拟环境名称,接下来所有模块都只会安装到该目录中去。

退出虚拟环境


deactivate


在虚拟环境安装Python套件
Virtualenv 附带有pip安装工具,因此需要安装的套件可以直接运行:


pip install [套件名称]


如果没有启动虚拟环境,系统也安装了pip工具,那么套件将被安装在系统环境中,为了避免发生此事,可以在~/.bashrc文件中加上:


export PIP_REQUIRE_VIRTUALENV=true


或者让在执行pip的时候让系统自动开启虚拟环境:


export PIP_RESPECT_VIRTUALENV=true
Virtualenvwrapper


Virtaulenvwrapper是virtualenv的扩展包,用于更方便管理虚拟环境,它可以做:
1. 将所有虚拟环境整合在一个目录下
2. 管理(新增,删除,复制)虚拟环境
3. 切换虚拟环境
4. ...

安装


sudo easy_install virtualenvwrapper 


此时还不能使用virtualenvwrapper,默认virtualenvwrapper安装在/usr/local/bin下面,实际上你需要运行virtualenvwrapper.sh文件才行,先别急,打开这个文件看看,里面有安装步骤,我们照着操作把环境设置好。

创建目录用来存放虚拟环境


mkdir $HOME/.virtualenvs


在~/.bashrc中添加行: export WORKON_HOME=$HOME/.virtualenvs

在~/.bashrc中添加行:source /usr/local/bin/virtualenvwrapper.sh

运行: source ~/.bashrc

此时virtualenvwrapper就可以使用了。

列出虚拟环境列表


workon


也可以使用


lsvirtualenv


新建虚拟环境


mkvirtualenv [虚拟环境名称]


启动/切换虚拟环境


workon [虚拟环境名称]

删除虚拟环境


rmvirtualenv [虚拟环境名称]


离开虚拟环境


deactivate

------------------------------------------------------------------------------------------------------------------------------------------------------------

virtualenv通过创建独立Python开发环境的工具, 来解决依赖、版本以及间接权限
问题. 比如一个项目依赖Django1.3 而当前全局开发环境为Django1.7, 版本跨度过大, 导致不兼容使项目无法正在运行, 使用virtualenv可以解决这些问题.

virtualenv创建一个拥有自己安装目录的环境, 这个环境不与其他虚拟环境共享库, 能够方便的管理python版本和管理python库

1. 安装Virtualenv

使用pip安装Virtualenv, 使用过python的都应该知道pip包管理神器吧, 即使不知道, 网站也有大把的教程, 不过推荐查看官方安装指南


$ pip install virtualenv
//或者由于权限问题使用sudo临时提升权限
$ sudo pip install virtualenv

2. virtualenv基本使用
现在开始使用virtualenv管理python环境


➜  Test git:(master) ✗ virtualenv ENV  #创建一个名为ENV的目录, 并且安装了ENV/bin/python, 创建了lib,include,bin目录,安装了pip
New python executable in
Installing setuptools, pip...done.
➜  Test git:(master) ✗ cd ENV
➜  ENV git:(master) ✗ ll
drwxr-xr-x  14 andrew_liu  staff  476 12  8 08:49 bin
drwxr-xr-x   3 andrew_liu  staff  102 12  8 08:49 include
drwxr-xr-x   3 andrew_liu  staff  102 12  8 08:49 lib

lib,所有安装的python库都会放在这个目录中的lib/pythonx.x/site-packages/下
bin,bin/python是在当前环境是使用的python解释器

如果在命令行中运行virtualenv --system-site-packages ENV, 会继承/usr/lib/python2.7/site-packages下的所有库, 最新版本virtualenv把把访问全局site-packages作为默认行为
default behavior.

2.1. 激活virtualenv


#ENV目录下使用如下命令
➜  ENV git:(master) ✗ source ./bin/activate  #激活当前virtualenv
(ENV)➜  ENV git:(master) ✗ #注意终端发生了变化


#使用pip查看当前库
(ENV)➜  ENV git:(master) ✗ pip list
pip (1.5.6)
setuptools (3.6)
wsgiref (0.1.2) #发现在只有这三个
pip freeze  #显示所有依赖
pip freeze > requirement.txt  #生成requirement.txt文件
pip install -r requirement.txt  #根据requirement.txt生成相同的环境

2.2. 关闭virtualenv

使用下面命令


$ deactivate


2.3. 指定python版本

可以使用-p PYTHON_EXE选项在创建虚拟环境的时候指定python版本



#创建python2.7虚拟环境
➜  Test git:(master) ✗ virtualenv -p /usr/bin/python2.7 ENV2.7
Running virtualenv with interpreter /usr/bin/python2.7
New python executable in ENV2.7/bin/python
Installing setuptools, pip...done.



#创建python3.4虚拟环境
➜  Test git:(master) ✗ virtualenv -p /usr/local/bin/python3.4 ENV3.4
Running virtualenv with interpreter /usr/local/bin/python3.4
Using base prefix '/Library/Frameworks/Python.framework/Versions/3.4'
New python executable in ENV3.4/bin/python3.4
Also creating executable in ENV3.4/bin/python
Installing setuptools, pip...done.

到此已经可以解决python版本冲突问题和python库不同版本的问题

3. 其他

3.1. 生成可打包环境

某些特殊需求下,可能没有网络, 我们期望直接打包一个ENV, 可以解压后直接使用, 这时候可以使用virtualenv -relocatable指令将ENV修改为可更改位置的ENV


#对当前已经创建的虚拟环境更改为可迁移
➜  ENV3.4 git:(master) ✗ virtualenv --relocatable ./
Making script ./bin/easy_install relative
Making script ./bin/easy_install-3.4 relative
Making script ./bin/pip relative
Making script ./bin/pip3 relative
Making script ./bin/pip3.4 relative

3.2. 获得帮助


$ virtualenv -h

当前的ENV都被修改为相对路径, 可以打包当前目录, 上传到其他位置使用
这并不能使虚拟环境跨平台使用

4. 参考链接
virtualenv官方文档  http://virtualenv.readthedocs.org/en/latest/virtualenv.html

标签:Python,虚拟环境,Virtualenv
0
投稿

猜你喜欢

  • python爬虫获取淘宝天猫商品详细参数

    2021-06-08 09:27:29
  • python 实现围棋游戏(纯tkinter gui)

    2023-11-23 16:13:04
  • 2行Python代码实现给pdf文件添加水印

    2022-04-03 00:29:26
  • python 输入一个数n,求n个数求乘或求和的实例

    2022-06-06 01:44:36
  • 详细介绍Python中的偏函数

    2022-12-28 08:40:53
  • Python映射类型之dict详解

    2023-08-03 13:19:19
  • python循环监控远程端口的方法

    2023-08-07 14:53:22
  • 使用 Vue cli 3.0 构建自定义组件库的方法

    2024-05-05 09:07:50
  • 对python列表里的字典元素去重方法详解

    2023-09-20 13:45:47
  • Go 每日一库之termtables的使用

    2024-05-22 10:20:25
  • 详细解读Python中的json操作

    2022-02-21 00:55:13
  • python实现一个简单的udp通信的示例代码

    2023-07-23 16:08:43
  • Python lambda 匿名函数优点和局限性深度总结

    2023-07-25 19:22:00
  • python通过exifread模块获得图片exif信息的方法

    2023-08-18 05:00:15
  • 在ASP.NET 2.0中操作数据之三十:格式化DataList和Repeater的数据

    2023-07-22 20:15:21
  • 交互设计杂七杂八

    2010-09-25 18:41:00
  • 在ASP.NET 2.0中操作数据之五十二:使用FileUpload上传文件

    2023-07-07 04:19:18
  • python从入门到实践之组合数据类型

    2021-09-02 17:53:54
  • pytorch实践线性模型3d详解

    2023-04-01 22:58:29
  • 使用python实现抓取中国银行外汇牌价首页数据实现

    2021-11-28 02:05:49
  • asp之家 网络编程 m.aspxhome.com