当前位置: 首页 > news >正文

Mac中使用virtualenv和virtualenvwrapper

Virtualenv

介绍

在使用 Python 开发的过程中,工程一多,难免会碰到不同的工程依赖不同版本的库的问题;亦或者是在开发过程中不想让物理环境里充斥各种各样的库,引发未来的依赖灾难。

因此,我们需要对于不同的工程使用不同的虚拟环境来保持开发环境以及宿主环境的清洁。而 virtualenv就是一个可以帮助我们管理不同 Python 环境的绝好工具。virtualenv 可以在系统中建立多个不同并且相互不干扰的虚拟环境。

安装

 pip3 install virtualenv

这样就成功了

使用

创建

假如我们想要用scrapy去爬取某个网站的信息,我们不想再宿主环境总安装scrapy以及requests这些包,那我们就可以使用virtualenv了。

假设我们把这个虚拟环境放在~/workspaces/project_env/spider/目录下

 virtualenv ~/workspaces/project_env/spider/

这样虚拟环境就创建好了,我们可以看到在这个目录下油三个目录被建立

  • bin:包含一些在这个虚拟环境中可用的命令,以及开启虚拟环境的脚本 activate
  • include:包含虚拟环境中的头文件,包括 Python 的头文件
  • lib:这里面就是一些依赖库
激活
 source ~/workspaces/project_env/spider/bin/activate

此时我们就已经在虚拟环境中了

可以安装一下requests这个模块

 pip install requests

可以看到很快就成功

退出虚拟环境
 deactivate

virtualenvwrapper

介绍

我们刚才了解了virtualenv,我觉得比较麻烦,每次开启虚拟环境之前要去虚拟环境所在目录下的 bin 目录下 source一下 activate,这就需要我们记住每个虚拟环境所在的目录。

一种可行的解决方案是,将所有的虚拟环境目录全都集中起来,比如放到 ~/virtualenvs/,并对不同的虚拟环境使用不同的目录来管理。virtualenvwrapper 正是这样做的。并且,它还省去了每次开启虚拟环境时候的 source 操作,使得虚拟环境更加好用。

安装

 pip install virtualwrapper

这样我们就安装好了可以管理虚拟环境的神器

使用

配置

首先需要对virtualenvwrapper进行配置:

  • 需要指定一个环境变量,叫做WORKON_HOME,它是用来存放各种虚拟环境目录的目录
  • 需要export vitualenvwrapper这个模块存放的位置
  • 需要运行一下它的初始化工具 virtualenvwrapper.sh,可通过which virtualenvwrapper.sh查看位置,我的在/usr/local/bin/

由于每次都需要执行这两步操作,我们可以将其写入终端的配置文件中。

如果使用 bash,则添加到 ~/.bashrc 中

如果使用 zsh,则添加到 ~/.zshrc 中

这样每次启动终端的时候都会自动运行,终端启动之后 virtualenvwrapper 就可以用啦

 export WORKON_HOME='~/Workspaces/Envs'export VIRTUALENVWRAPPER_PYTHON=/usr/local/bin/python3source /usr/local/bin/virtualenvwrapper.sh

创建虚拟机

mkvirtualenv env

创建虚拟环境完成后,会自动切换到创建的虚拟环境中

当然也可以指定虚拟机的 python 版本

mkvirtualenv env -p C:\python27\python.exe

列出虚拟环境列表

workon 或者 lsvirtualenv

启动/切换虚拟环境

使用 workon [virtual-name] 即可切换到对应的虚拟环境

workon [虚拟环境名称]

删除虚拟环境

rmvirtualenv [虚拟环境名称]

离开虚拟环境,和 virutalenv 一样的命令

deactivate
http://www.lryc.cn/news/190204.html

相关文章:

  • wpf webBrowser控件 常用的函数和内存泄漏问题
  • AI游戏设计的半年度复盘;大模型+智能音箱再起波澜;昇思大模型技术公开课第2期;出海注册经验分享;如何使用LoRA微调Llama 2 | ShowMeAI日报
  • 多线程 - 锁策略 CAS
  • VP记录——The 2021 CCPC Weihai Onsite
  • JavaWeb---Servlet
  • 英语——方法篇——单词——谐音法+拼音法——50个单词记忆
  • 35道Rust面试题
  • 01 时钟配置初始化,debug
  • Halcon我的基础教程(一)(我的菜鸟教程笔记)-halcon仿射变换(Affine Transformation)的探究与学习
  • c++视觉---中值滤波处理
  • Edge使用猴油脚本实战(实验室安全考试系统刷在线时长——网站永久自动刷新)
  • Vue 中 KeepAlive 内置缓存使用
  • 语言模型编码中/英文句子格式详解
  • 【Node.js】路由
  • matlab 2ask 4ask 信号调制
  • Python利用jieba分词提取字符串中的省市区(字符串无规则)
  • MuLogin防关联浏览器帮您一键实现Facebook账号多开
  • 【C语言】每日一题(半月斩)——day4
  • Are you sure you want to continue connecting (yes/no) 每次ssh进
  • 网络与信息系统安全设计规范
  • 在Linux怎么用vim实现把一个文件里面的文本复制到另一个文件里面
  • CCAK—云审计知识证书学习
  • 3.springcloudalibaba gateway项目搭建
  • Debezium日常分享系列之:Debezium 2.3.0.Final发布
  • js为什么是单线程?
  • centos安装redis教程
  • 把短信验证码储存在Redis
  • 【已编译资料】基于正点原子alpha开发板的第三篇系统移植
  • 地下城堡3魂之诗食谱,地下城堡3菜谱37种
  • HDMI 基于 4 层 PCB 的布线指南