Python 学习之虚拟环境

devtools/2024/9/25 16:43:46/

一、为什么需要虚拟环境

到目前位置我们所有的第三方包安装都是直接通过 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 即可解决问题,目前尚未寻找到更好的解决方式。欢迎大家来提供新的解决办法!


http://www.ppmy.cn/devtools/117060.html

相关文章

鸿蒙开发(HarmonyOS)组件化浅谈

众所周知,现在组件化在移动开发中是很常见的,那么组件化有哪些好处: 1. 提高代码复用性:组件化允许将应用程序的不同功能模块化,使得这些模块可以在不同的项目中重复使用,从而提高开发效率并减少重复工作。…

卷积神经网络-最优模型

文章目录 一、关键步骤1. 定义性能评估指标2. 设置保存逻辑3. 保存最佳模型4.使用最优模型 二、代码运用1. 保存模型参数(state_dict)2. 保存完整的模型3.使用模型参数4.读取完整模型的方法 三、保存模型优缺点1.优点2.缺点 在卷积神经网络(C…

java 获取集合a比集合b多出来的对象元素

public class OrderListEntity {/*** deprecated 对象集合的处理* param aData 集合a* param bData 集合b* return 返回集合a比集合b多出来的部分, 通过id判断*/public static List<OrderListEntity> AHasMoreThanBData(List<OrderListEntity> aData, List<Ord…

一地通过率高达46.43%!为什么都说软考难?

从2023年上半年到2024年上半年&#xff0c;近三次考试&#xff0c;几个考区的软考通过率基本不超过13%。 然而根据近日陕西省科技资源统筹中心公布的数据&#xff0c;从1987年到2024年&#xff0c;陕西软考的总拿证率竟然高达46.43%。软考真的有大家认为的那么难吗&#xff1f;…

python爬虫:从12306网站获取火车站信息

代码逻辑 初始化 (init 方法)&#xff1a; 设置请求头信息。设置车站版本号。 同步车站信息 (synchronization 方法)&#xff1a; 发送GET请求获取车站信息。返回服务器响应的文本。 提取信息 (extract 方法)&#xff1a; 从服务器响应中提取车站信息字符串。去掉字符串末尾的…

跨平台数据库工具DataGrip v2024.2全新发布——增加智能刷新功能

DataGrip 是一个跨平台的数据库工具可在Windows&#xff0c;OS X 和 Linux上使用。同时支持多种数据库&#xff0c;包含了SQL Server&#xff0c;Oracle&#xff0c;PostgreSQL&#xff0c;MySQL&#xff0c;DB2&#xff0c;Sybase&#xff0c;SQLite&#xff0c;Derby&#xf…

【devops】devops-ansible之介绍和基础使用

本站以分享各种运维经验和运维所需要的技能为主 《python零基础入门》&#xff1a;python零基础入门学习 《python运维脚本》&#xff1a; python运维脚本实践 《shell》&#xff1a;shell学习 《terraform》持续更新中&#xff1a;terraform_Aws学习零基础入门到最佳实战 《k8…

QT编译之后的debug包下运行程序双击运行出现无法定位程序输入点__gxx_personlity_seh0于动态链接库

1.出现这个错误的原因是&#xff1a; 缺少如下文件&#xff1a; 2.解决方法&#xff1a; 在运行程序.exe所在的目录执行&#xff1a;windeployqt untitled.exe&#xff08;指打包的运行程序&#xff09; 3.如果执行提示由于找不到qt5core.dll,无法继续执行代码和无法识别win…