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

Python 学习之虚拟环境

一、为什么需要虚拟环境

到目前位置我们所有的第三方包安装都是直接通过 pip install xx 的方式进行安装的,这样安装会将那个包安装到你的系统级的 python 环境中。但是这样有一个问题,就是如果你现在 Diango 1.10.x写了个网站,然后你的领导跟你说,之前有一个旧项目是用Django 0.9 开发的,让你来维护,但是 Django 1.10 不再兼容 Django 0.9 的一些语法了。这时候就会碰到一个问题,我如何在我的电脑中同时拥有 Django 1.10 和 Django 0.9 两套环境呢? 这时候我们就可以通过虚拟环境来解决这个问题。

二、如何使用虚拟环境

注意:以下操作是在macbook pro M2 系统中执行

1、安装virtualenv:

pip install virtualenv   //安装在python2的环境中pip3 install virtualenv  //安装在python3的环境中

2、创建虚拟环境

virtualenv [虚拟环境的名字]  ,mac 默认创建的路径是在/User/[你的电脑用户名]下面

如果你当前的 Python3/Scripts 的查找路径在 Python2/Scripts 的前面,那么将会使用python3 作为这个虚拟环境的解释器。如果 python2/Scripts 在 python3/Scripts 前面,那么将会便用 python2 来作为这个虚拟环境的解释器。

3、进入环境

虚拟环境创建好了以后,那么可以进入到这个虚拟环境中,然后安装一些第三方包,进入虚拟环境在不同的操作系统中有不同的方式,一般分为两种,第一种是windows ,第二种是*nix :

  1. windows 进入虚拟环境:进入到虚拟环境的 Scripts 文件夹中,然后执行 activate
  2. *nix进入虚拟环境: source /path/to/virtualenv/bin/activate 一旦你进入到了这个虚拟环境中,你安装包,卸载包都是在这个虚拟环境中,不会影响到外面的环境。

sourse /User/[你的电脑用户名]/虚拟环境名字/bin/activate

4、退出虚拟环境

deactivate  退出当前虚拟环境

5、删除虚拟环境

rm -rf [虚拟环境目录]

三、virtualenvwrapper

virtualenvwrapper 这个软件包可以让我们管理虚拟环境变得更加简单,不用再跑到某个目录下通过 virtualenv 来创建虚拟环境,并目激活的时候也要跑到具体的目录下去激活,

1、安装virtualenvwrapper

注意:安装virtualenvwrapper时会自动将virtualenv安装

*nix:  pip install virtualenvwrapper

windows:  pip instal1 virtualenvwrapper-win

2、 virtualenvwrapper 的基本使用

  1. 创建虚拟环境:mkvirtualenv my_env
  2. 切换到某个虚拟环境 workon my_env
  3. 退出当前虚拟环境 deactivate
  4. 删除某个虚拟环境 rmvirtualenv my_env
  5. 列出所有虚拟环境 lsvirtualenv
  6. 进入到虚拟环境所在的目录 cdvirtualenv

3、修改mkvirtualenv的默认路径

修改WORKON_HOME 环境变量

四、报错

第一:问题:使用mkvirtualenv 创建虚拟环境终端报:zsh: command not found: mkvirtualenv

解决: 根据下面步骤配置环境变量

1、新建文件夹virtualenvs  方便管理多个虚拟环境

mkdir $HOME/.virtualenvs  

2、查看virtualenvwrapper.sh位置

  which virtualenvwrapper.sh

我的路径:/Library/Frameworks/Python.framework/Versions/3.12/bin//virtualenvwrapper.sh  

3、查看Python3位置

which python3

我的路径:/Library/Frameworks/Python.framework/Versions/3.12/bin//python3   

4、查看virtualenv位置

find / -name "virtualenv" 

我的路径:/Library/Frameworks/Python.framework/Versions/3.12/bin/virtualenv

5、设置环境变量

  1. open -e ~/.bash_profile 以编辑模式打开bash_profile
  2.  bash_profile中添加
#virtualenvwrapperexport WORKON_HOME=~/.virtualenvsexport VIRTUALENVWRAPPER_PYTHON=/Library/Frameworks/Python.framework/Versions/3.12/bin//python3# 指定virtualenv的路径export VIRTUALENVWRAPPER_VIRTUALENV=/Library/Frameworks/Python.framework/Versions/3.12/bin/virtualenvsource /Library/Frameworks/Python.framework/Versions/3.12/bin//virtualenvwrapper.sh

command+S 保存,并在终端输入 source ~/.bash_profile 使上述修改生效

参考链接:【2024】 Mac 安装virtualenvwrapper 、环境配置_mac virtualenvwrapper-CSDN博客

新问题:注意:重启终端后再运行mkvirtualenv 的命令,还是会报zsh: command not found: mkvirtualenv,这里再次执行source ~/.bash_profile 即可解决问题,目前尚未寻找到更好的解决方式。欢迎大家来提供新的解决办法!

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 一元运算符(自增自减)
  • 力扣P1706全排列问题 很好的引入暴力 递归 回溯 dfs
  • Docker 的安装部署与基本使用
  • 使用 from __future__ import annotations 语句来允许在类型注释中使用尚未定义的类名
  • 用 Pygame 实现一个乒乓球游戏
  • 数字IC设计\FPGA 职位经典笔试面试整理--语法篇 Verilog System Verilog(部分)
  • lxml库
  • Axios基本语法和前后端交互
  • 【排序算法】选择排序、堆排序
  • Vue3:shallowRef与shallowReactive
  • JS手写Promise以及promise.all方法
  • 【算法】贪心+堆排序实现大根堆及标准库容器类的融合使用
  • 车载网络测试实操源码_使用CAPL脚本实现安全访问解锁,并模拟各种测试场景
  • C语言中易混淆概念的关键字
  • Qt/C++ 多线程同步机制详解及应用
  • 【笔记】你不知道的JS读书笔记——Promise
  • Asm.js的简单介绍
  • canvas绘制圆角头像
  • CAP 一致性协议及应用解析
  • CODING 缺陷管理功能正式开始公测
  • css的样式优先级
  • CSS中外联样式表代表的含义
  • ES6, React, Redux, Webpack写的一个爬 GitHub 的网页
  • java B2B2C 源码多租户电子商城系统-Kafka基本使用介绍
  • Java应用性能调优
  • JAVA之继承和多态
  • linux学习笔记
  • python学习笔记 - ThreadLocal
  • rabbitmq延迟消息示例
  • react-core-image-upload 一款轻量级图片上传裁剪插件
  • SQLServer之创建数据库快照
  • vue和cordova项目整合打包,并实现vue调用android的相机的demo
  • webpack4 一点通
  • Yeoman_Bower_Grunt
  • yii2中session跨域名的问题
  • 安卓应用性能调试和优化经验分享
  • 第2章 网络文档
  • 力扣(LeetCode)56
  • 码农张的Bug人生 - 见面之礼
  • 文本多行溢出显示...之最后一行不到行尾的解决
  • 源码安装memcached和php memcache扩展
  • 最简单的无缝轮播
  • 哈罗单车融资几十亿元,蚂蚁金服与春华资本加持 ...
  • ​创新驱动,边缘计算领袖:亚马逊云科技海外服务器服务再进化
  • ​软考-高级-系统架构设计师教程(清华第2版)【第1章-绪论-思维导图】​
  • #FPGA(基础知识)
  • #java学习笔记(面向对象)----(未完结)
  • #中国IT界的第一本漂流日记 传递IT正能量# 【分享得“IT漂友”勋章】
  • $refs 、$nextTic、动态组件、name的使用
  • (¥1011)-(一千零一拾一元整)输出
  • (14)学习笔记:动手深度学习(Pytorch神经网络基础)
  • (4)事件处理——(6)给.ready()回调函数传递一个参数(Passing an argument to the .ready() callback)...
  • (八)五种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划MATLAB
  • (附源码)spring boot基于小程序酒店疫情系统 毕业设计 091931
  • (企业 / 公司项目)前端使用pingyin-pro将汉字转成拼音