Python 虚拟环境 virtualenv

简介: Python 虚拟环境 virtualenv

virtualenv



 Python 今天我们就不聊了。接下来咱们说说virtualenv,英文比较好的同学,可能已经猜到了一半,virtual,即:虚拟的。那env是什么鬼?environment吗?所以翻译成中文就是”虚拟环境“。


   到底什么是虚拟环境呢?顾名思义,它是一个虚拟出来的环境。通俗的来讲,可以借助虚拟机,docker来理解虚拟环境,就是把一部分内容独立出来,我们把这部分独立出来的东西称作“容器”,在这个容器中,我们可以只安装我们需要的依赖包,而且各个容器之间互相隔离,互不影响。我们要学习Django,我们通过这个环境搞一个Django的虚拟环境就好了。

【前提概要】



   Django也是一个非常流行的web框架。由于Django的迭代更新非常快,也比较频繁,所以有一些过时的东西需要丢弃掉,一些新的东西需要加进来,从而导致不同的版本之间不兼容。比如Django1.3、Django1.4、Django1.8之间就有很大的差异性。


   或者是说,以Python的版本举例,现在工作中使用的Python版本与Python2.x和Python3.x两种。

【故事背景】



 假设要进行Python web开发,使用的是Django。手上还有两个老项目A和B需要维护,而新项目C也正在开发中。这里项目A使用的是django1.3,项目B使用的是django1.4,而新项目C使用的是Django1.8。那么问题来了,如何同时在本地进行ABC这三个项目的开发和维护?


正常的模式可能是这样:现在在A项目上有一个BUG需要修复,于是,先执行下面的命令,删除掉原来的版本:


pip uninstall django


然后再执行下面的命令安装django1.3


pip install django==1.3


数分钟后,bug修复完毕,好,现在进行新项目C的开发了,然后又要重复上面的故事。

 好了,这还是最理想的情况。最不理想的情况就是基于django的第三方依赖也是跟Django版本相关的,于是除了install和uninstall Django之外,还要uninstall和install其依赖,Orz,这特么的就尴尬了...


VirtualEnv能做什么呢?



 VirtualEnv可以搭建虚拟且独立的python运行环境, 使得单个项目的运行环境与其它项目独立起来。同时也可以用于在一台机器上创建多个独立的python运行环境,VirtualEnvWrapper为前者提供了一些便利的命令行上的封装。


 Virtualenv是一个非常好的virtual python environment builder,他最大的好处是,可以让每一个python项目单独使用一个环境,而不会影响python系统环境,也不会影响其他项目的环境。


 Virtualenv可用于创建独立的Python环境,在这些环境里面可以选择不同的Python版本或者不同的Packages,并且可以在没有root权限的情况下在环境里安装新套件,互相不会产生任何的影响。


言归正传



安装,virtualenv本质上是个python包, 使用pip安装:


pip install virtualenv


在工作目录下创建虚拟环境(默认在当前目录):注意需要自定义虚拟环境的名字!


~$virtualenv TestEnv
New python executable in ~/TestEnv/bin/python
Installing setuptools, pip, wheel...done.


默认情况下, 虚拟环境中不包括系统的site-packages, 若要使用请添加参数:


语法:virtualenv --system-site-packages TestEnv


使用virtualenv默认python版本创建虚拟环境


语法:virtualenv --no-site-packages ubuntu_env


就可以在当前目录创建一个env目录(虚拟环境名称,这个文件夹就是保存 Python 虚拟环境),你会注意到,virtualenv会把python,setuptools和pip给你安装上。


自定义python版本创建虚拟环境


 1. 安装需要版本的python

 2. 指定virtualenv中的python版本

virtualenv --no-site-packages --python=2.7 env


Note:


 1. 创建virtualenv虚拟环境之前,系统中必须要安装有对应版本的python,并且卸载之后当前虚拟环境就无效了。系统中可以同时存在python2和python3,通过环境变量中的系统变量path(不是用户变量)控制cmd或者系统中使用哪个版本的python,哪个版本的路径在前面就优先使用哪个版本。


 2. –no-site-packages表示不包括系统全局的Python安装包,这样会更令环境更干净


 3. –python=python2.7指定Python的版本未系统已经安装了的Python2.7


 4. env是建立的虚拟环境名称


 5. 没有安装python2.7或者使用命令virtualenv --no-site-packages --python=python2.7 env会出现The executable python does notexist 错误


注意: 


 安装的库的位置在虚拟环境的 env/Lib/site-packages/目录里,而不是在系统的python的Lib/site-packages目录里,这样你就知道为什么虚拟环境是分开的了吧。

 Note :virtualenv 创建的虚拟环境与主机的 Python 环境完全无关,你主机配置的库不能在 virtualenv 中直接使用。你需要在虚拟环境中利用 pip install 再次安装配置后才能使用。


关于创建一个虚拟环境,你也可以这样做!



1、为一个工程创建一个虚拟环境:


$ cd my_project_dir
$ virtualenv venv  #venv为虚拟环境目录名,目录名自定义


 virtualenv venv 将会在当前的目录中创建一个文件夹,包含了Python可执行文件,以及 pip 库的一份拷贝,这样就能安装其他包了。


  虚拟环境的名字(此例中是 venv )可以是任意的;若省略名字将会把文件均放在当前目录。



 在任何你运行命令的目录中,这会创建Python的拷贝,并将之放在叫做 venv 的文件中。



2、你可以选择使用一个Python解释器:

$ virtualenv -p /usr/bin/python2.7 venv    # -p参数指定Python解释器程序路径


这将会使用 /usr/bin/python2.7 中的Python解释器。


虚拟环境激活,若想使用就需要激活创建的虚拟环境!

进入虚拟环境目录 执行source ./bin/activate激活虚拟环境:


# 相对路径方式:<br>~/TestEnv$ source bin/activate
(TestEnv) ~/TestEnv$ python -V
Python 2.7.11+<br><br># 绝对路径方式
$ source venv/bin/activate # 绝对路径


从现在起,任何你使用pip安装的包将会放在 venv 文件夹中,与全局安装的Python隔绝开。像平常一样安装包,比如:


$ pip install requests


使用requirements.txt安装版本包(requirements.txt文件下保存的都是各个依赖包的版本信息)


pip install -r requirements.txt


 进入环境env1,执行pip freeze > requirements.txt将包依赖信息保存在requirements.txt文件中。


 最好手动调整一下顺序,比如numpy和scipy要在matplotlib前面安装;另外如果想安装最新版本的,再将后面的版本号==1.9.1什么的删除。


 然后进入目的虚拟环境env2,执行pip install -r requirements.txt,pip就会自动从网上下载并安装所有包。


 虚拟环境env2如果是env1的拷贝,最好先pip uninstall -ry requirements.txt,再pip install -r requirements.txt


如果你在虚拟环境中暂时完成了工作,则可以停用它:


退出虚拟环境:


# 在环境下,相对退出<br>(TestEnv) ~/TestEnv$ deactivate
~/TestEnv$<br><br>#走绝对路径<br>$ .venv/bin/deactivate


要删除一个虚拟环境,只需删除它的文件夹。(执行 rm -rf venv )。这将会回到系统默认的Python解释器,包括已安装的库也会回到默认的。


 这里virtualenv 有些不便,因为virtual的启动、停止脚本都在特定文件夹,可能一段时间后,你可能会有很多个虚拟环境散落在系统各处,你可能忘记它们的名字或者位置。


virtualenvwrapper 



 鉴于virtualenv不便于对虚拟环境集中管理,所以推荐直接使用virtualenvwrapper。 virtualenvwrapper提供了一系列命令使得和虚拟环境工作变得便利。它把你所有的虚拟环境都放在一个地方。


1、安装virtualenvwrapper(确保virtualenv已安装)


pip install virtualenvwrapper
pip install virtualenvwrapper-win  #Windows使用该命令


2、安装完成后,在~/.bashrc写入以下内容


export WORKON_HOME=$HOME/.virtualenvs
source /usr/local/python3/bin/virtualenvwrapper.sh
VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3


source ~/.bashrc    #读入配置文件,立即生效


第一行:virtualenvwrapper存放虚拟环境目录


第二行:virtrualenvwrapper会安装到python的bin目录下,所以该路径是python安装目录下bin/virtualenvwrapper.sh


virtualenvwrapper基本使用



1.创建虚拟环境 mkvirtualenv


mkvirtualenv venv


这样会在WORKON_HOME变量指定的目录下新建名为venv的虚拟环境。

若想指定python版本,可通过"--python"指定python解释


mkvirtualenv --python=/usr/local/python3/bin/python venv


2. 基本命令  


 查看当前的虚拟环境目录


[root@localhost ~]# workon
py2
py3


 切换到虚拟环境


[root@localhost ~]# workon py3
(py3) [root@localhost ~]#


 退出虚拟环境


(py3) [root@localhost ~]# deactivate
[root@localhost ~]#


 删除虚拟环境


rmvirtualenv venv


使用pycharm自动建立虚拟环境



也可以使用 pycharm 自带功能建立虚拟环境


aHR0cHM6Ly9pbWFnZXMyMDE3LmNuYmxvZ3MuY29tL2Jsb2cvODE3NTU4LzIwMTcwOC84MTc1NTgtMjAxNzA4MDMxMDI4NDcyMDktMjA5OTIzMjQ0Ni5wbmc.png


之后,将 requirements.txt 文件放到虚拟目录 venv 下,pycharm自动识别,点击『Install requirements』安装相应的 package。


aHR0cHM6Ly9pbWFnZXMyMDE3LmNuYmxvZ3MuY29tL2Jsb2cvODE3NTU4LzIwMTcwOC84MTc1NTgtMjAxNzA4MDMxMDI3MjAzNTAtMTQxNDk0NDQzNS5wbmc.png


或者使用:


(venv) $ pip freeze >requirements.txt    # 生成
(venv) $ pip install -r requirements.txt    # 安装


目录
相关文章
|
9月前
|
人工智能 安全 Shell
Jupyter MCP服务器部署实战:AI模型与Python环境无缝集成教程
Jupyter MCP服务器基于模型上下文协议(MCP),实现大型语言模型与Jupyter环境的无缝集成。它通过标准化接口,让AI模型安全访问和操作Jupyter核心组件,如内核、文件系统和终端。本文深入解析其技术架构、功能特性及部署方法。MCP服务器解决了传统AI模型缺乏实时上下文感知的问题,支持代码执行、变量状态获取、文件管理等功能,提升编程效率。同时,严格的权限控制确保了安全性。作为智能化交互工具,Jupyter MCP为动态计算环境与AI模型之间搭建了高效桥梁。
638 2
Jupyter MCP服务器部署实战:AI模型与Python环境无缝集成教程
|
9月前
|
Python
在VScode环境下配置Python环境的方法
经过上述步骤,你的VSCode环境就已经配置好了。请尽情享受这扇你为自己开启的知识之窗。如同你在冒险世界中前行,你的探索之路只有越走越广,你获得的知识只会越来越丰富,你的能力只会越来越强。
886 37
|
Ubuntu Linux 测试技术
Python 虚拟环境配置
本文总结了 Python 开发中的环境配置、常用操作和常见错误处理。重点介绍了如何使用 `virtualenv` 搭建虚拟环境,解决依赖冲突问题,并保持系统环境的干净。同时,详细说明了依赖库的安装与管理方法,包括使用 `pip install` 安装依赖、生成和使用 `requirements.txt` 文件,以及查看 Python 文档和修改环境变量等实用技巧。
977 60
|
Shell Linux Ruby
Python3虚拟环境venv
`venv` 是 Python 的虚拟环境工具,用于为不同项目创建独立的运行环境,避免依赖冲突。通过 `python3 -m venv` 命令创建虚拟环境,并使用 `source bin/activate` 激活。激活后,所有 Python 包将安装在该环境中,不影响系统全局环境。退出环境使用 `deactivate` 命令。每个虚拟环境拥有独立的包集合,确保项目间的隔离性。删除虚拟环境只需删除其目录即可。
1306 34
|
11月前
|
Java API Docker
在线编程实现!如何在Java后端通过DockerClient操作Docker生成python环境
以上内容是一个简单的实现在Java后端中通过DockerClient操作Docker生成python环境并执行代码,最后销毁的案例全过程,也是实现一个简单的在线编程后端API的完整流程,你可以在此基础上添加额外的辅助功能,比如上传文件、编辑文件、查阅文件、自定义安装等功能。 只有锻炼思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
在线编程实现!如何在Java后端通过DockerClient操作Docker生成python环境
|
SQL 分布式计算 数据处理
云产品评测|分布式Python计算服务MaxFrame | 在本地环境中使用MaxFrame + 基于MaxFrame实现大语言模型数据处理
本文基于官方文档,介绍了由浅入深的两个部分实操测试,包括在本地环境中使用MaxFrame & 基于MaxFrame实现大语言模型数据处理,对步骤有详细说明。体验下来对MaxCompute的感受是很不错的,值得尝试并使用!
324 1
|
Shell 程序员 开发者
轻松搞定在Python中构建虚拟环境
本教程教你如何使用业界公认的最佳实践,创建一个完全工作的Python开发环境。虚拟环境通过隔离依赖项,避免项目间的冲突,并允许你轻松管理包版本。我们将使用Python 3的内置`venv`模块来创建和激活虚拟环境,确保不同项目能独立运行,不会相互干扰。此外,还将介绍如何检查Python版本、激活和停用虚拟环境,以及使用`requirements.txt`文件共享依赖项。 通过本教程,你将学会: - 创建和管理虚拟环境 - 避免依赖性冲突 - 部署Python应用到服务器 适合新手和希望提升开发环境管理能力的开发者。
907 2
|
Python
探索Python虚拟环境:virtualenv、venv与pipenv比较
在Python开发中,有效的环境管理至关重要。virtualenv、venv和pipenv是常用的虚拟环境管理工具。virtualenv支持Python 2.7+和3.3+,可创建独立环境;venv为Python 3.3+内置库,简单轻量但功能有限;pipenv则结合了包管理和虚拟环境管理,生成Pipfile.lock确保依赖确定性和安全性,推荐作为首选工具。
509 2
|
人工智能 编译器 Python
python已经安装有其他用途如何用hbuilerx配置环境-附带实例demo-python开发入门之hbuilderx编译器如何配置python环境—hbuilderx配置python环境优雅草央千澈
python已经安装有其他用途如何用hbuilerx配置环境-附带实例demo-python开发入门之hbuilderx编译器如何配置python环境—hbuilderx配置python环境优雅草央千澈
306 0
python已经安装有其他用途如何用hbuilerx配置环境-附带实例demo-python开发入门之hbuilderx编译器如何配置python环境—hbuilderx配置python环境优雅草央千澈
|
机器学习/深度学习 Rust 算法
Python环境管理的新选择:UV和Pixi,高性能Python环境管理方案
近期Python生态系统在包管理领域发生了重要变化,Anaconda调整商业许可证政策,促使社区寻找更开放的解决方案。本文介绍两款新一代Python包管理工具:UV和Pixi。UV用Rust编写,提供高性能依赖解析和项目级环境管理;Pixi基于Conda生态系统,支持conda-forge和PyPI包管理。两者分别适用于高性能需求和深度学习项目,为开发者提供了更多选择。
2872 2

推荐镜像

更多