virtualenv

virtualenv

大家好,又见面了,我是全栈君。

1.virtualenv介绍

在python开发中,我们可能会遇到一种情况,就是当前的项目依赖的是某一个版本,但是另一个项目依赖的是另一个版本,这样就会造成依赖冲突,而virtualenv就是解决这种情况的,virtualenv通过创建一个虚拟化的python运行环境,将我们所需的依赖安装进去的,不同项目之间相互不干扰,如下所示。 

virtualenv

 

2.安装virtualenv

 安装virtualenv比较简单,无论是在linux系统上还是windows上都可以通过pip来进行安装,如下:

pip install virtualenv

 

 

3.virtualenv运行使用

创建一个目录文件夹来保存虚拟环境的项目文件myproject

进入到目录执行命令

virtualenv -p /usr/bin/python2.7 --no-site-packages --distribute Project_py2

设置虚拟环境的python版本是2.7,令隔离环境不能访问系统全局的site-packages目录,默认会安装setup、pip、wheel等基础模块

 

激活虚拟环境

source Project_py2/bin/activate

 

退出虚拟环境

deactivate

 

安装之后需要新建virtualenv的独立环境,具体可以查看其帮助命令:virtualenv -h

virtualenv

常用的参数有:

-p:指定一个版本python环境;通常当你的系统中安装了多个python版本时会用到;默认情况下virtualenv会优先选取它的宿主python环境,即它安装在那个python版本下就会默认选择哪个版本作为默认python隔离环境。

 

–no-site-packages:不使用系统环境的python安装包,即隔离包中不能使用真实python环境的安装包;当前版本这个选项是默认的。

–system-site-packages:与上面相反,使隔离环境能访问系统环境的python安装包

–distribute:copy一个python环境的分支,默认会安装setup、pip、wheel等基础模块

 

 

4、集成到开发环境

virtualenv

virtualenv

virtualenv

 

virtualenv和virtualenvwrapper介绍

virtualenv 工具可以创建隔离的python环境 
我们经常会遇到两个常见问题

  • 版本依赖
  • 间接许可

版本依赖: 
1.假设有一个app,需要libfoo 1.0 的库,另一个app需要libfoo 2.0的库,如何才能把这两个库都安装到/usr/lib/python2.7/site-packages? 
2. 当系统的库发生了变化,或许app就运行不了 
间接许可 
3. 当主机,我们没有root权限。

virtualenv 就能解这样的问题,它将创建一个单独的环境,库将安装到自己目录下,不会和其他环境共享。

由于virtualenv用起来有点麻烦,wrapper对它进行了封装,让它更好用,最终我们使用wrapper提供的命令,但是实际工作都是virtualenv做的。

安装

推荐使用pip安装

pip install virutalenv virtualenvwrapper

virtualenv用法

创建环境

virtualenv [虚拟环境名称] 
virtualenv test

默认创建的环境,是可以使用系统已经安装的包。

如果不想使用系统的包,加上–no-site-packeages参数

virtualenv --no-site-packages test

这个时候会创建目录test

激活环境

cd test
source ./bin/activate

此时,就进入了一个隔离的环境,安装,卸载和使用模块,都会在test环境中,而不会影响系统和其他环境。

退出环境

deactive

virtualenvwrapper的用法

我们可以看到,创建的环境都是零散的,而且还要执行cd,执行source 来激活环境。 
vw可以进行环境的管理,把创建的环境记录下来,并进行管理。

初始化

第一次安装完成后需要,先设置一个变量WORKON_HOME,它将作为所有环境的前缀,并且source /usr/local/bin/virtualenvwrapper.sh

$ mkdir -p $WORKON_HOME
$ export WORKON_HOME=~/Envs
$ source /usr/local/bin/virtualenvwrapper.sh

把export命令和source命令,加入到~/.bash_profile,就无需重复初始化了

创建环境

mkvirtualenv env1

mkvirtualenv env2

环境创建之后,会自动进入该目录,并激活该环境。

切换环境

workon env1

workon env2

列出已有环境

workon

退出环境

deactivate

删除环境

rmvirtualenv

创建project

 项目将创建到PROJECT_HOME目录下,实际上相当于在某个目录下,建了一个环境。

 mkproject  

 

转载于:https://www.cnblogs.com/mituxiaoshutong/p/7802899.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/108035.html原文链接:https://javaforall.net

(0)
上一篇 2022年3月8日 下午2:00
下一篇 2022年3月8日 下午2:00


相关推荐

  • ArcGIS路径分析_arcgis区域统计分析

    ArcGIS路径分析_arcgis区域统计分析在累积选项卡中,可以选择网络数据集中要对路径对象进行累积的成本属性。这些累积属性仅供参考;求解程序仅使用分析图层的阻抗参数所指定的成本属性来计算路径。

    2022年8月24日
    8
  • 总结一下pycharm里面生成exe文件遇到的坑-pyinstaller提示不是内部或外部命令

    总结一下pycharm里面生成exe文件遇到的坑-pyinstaller提示不是内部或外部命令首先查找了一下网上进行 exe 打包的步骤 总结如下 1 安装 pyinstallerF gt Settings gt ProjectInter gt 添加相应的包 2 点击 terminal 跳转到 py 文件所在的包 pyinstaller F wprojectword py 生成 exe 文件本来一看很简单 直接两步就可以了 结果 pyinstaller 始终执行不成功 在 terminal 里面执行 pyinstaller 始终提示不是内部或外部

    2026年3月26日
    2
  • QT 播放器之界面布局[通俗易懂]

    QT 播放器之界面布局[通俗易懂]第一步。。。当然是创建项目啦然后修改项目的名称,接着找一个自己喜欢的文件夹藏着。记得路径不能有中文,当然项目名称也不能有中文之后一直下一步直到完成,来到该界面后双击ui文件去布局右键把菜单栏,工具栏,状态栏去除先把控件摆好,之后再修改名字设置按钮的最大尺寸设置centralWidget布局成右边这样最后修改控件的对象名称…

    2022年6月13日
    45
  • redis分布式锁的应用场景_分布式锁redis实现方式

    redis分布式锁的应用场景_分布式锁redis实现方式RedLock分布式锁 基于Redis实现分布式锁的方式名叫Redlock 安全特性:互斥访问,即永远只有一个client能拿到锁 避免死锁:最终client都可能拿到锁,不会出现死锁的情况,即使原本锁住某资源的clientcrash了或者出现了网络分区(两个完全不连通的区域,美国的网咱们登不上去) 容错性:只要大部分Redis节点存活就可以正常提供服务 Redis集群及应用场景热点数据存取数据优先从Redis操作,如果不存在再从文

    2025年10月7日
    5
  • 【AI Agent研究综述】《基础智能体的进展与挑战:从脑启发智能到进化、协作和安全系统——第四部分:构建安全且有益的AI智能体》

    【AI Agent研究综述】《基础智能体的进展与挑战:从脑启发智能到进化、协作和安全系统——第四部分:构建安全且有益的AI智能体》

    2026年3月16日
    2
  • 【玩转嵌入式屏幕显示】(六)ST7789 SPI LCD硬件垂直滚动功能的使用

    一、想法萌生小熊派开发板的LCD小屏幕使用是ST7789驱动IC,之前一直有在该块屏幕上实现滚动显示的想法,最初构想在MCU侧创建一个大的队列,将整个屏幕显示内容交由队列管理,然后不停的去整屏刷新以实现屏幕滚动。理论上这样的实现比较耗资源,耗费CPU资源去操作SPI外设,耗费内存资源去存储显示数据,所以一直没有去做这件事。今天在查看ST7789数据手册写论文时,偶然发现ST7789手册种:咦?Scroll?滚动?发现新大陆!根据手册中的8.14章节描述,旋转滚动仅仅是垂直滚动的一种模式,由垂

    2022年4月8日
    94

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号