python中如何使用虚拟环境


Posted in Python onOctober 14, 2020

在进行python的开发过程中一直倡导使用虚拟环境来进行项目隔离,这样不会因为python的包不同而导致各种问题,但是以往为了图省事简单,安装包就一直使用pip install 进行全局安装,这样做其实很不好,最近也开始尝试使用虚拟环境来对项目进行隔离开发。

在python中一般情况下有两套方案,一种是使用virtualenv/venv 方式,还有一种是使用pipenv,但是看到网上对于pipenv这个项目有些非议,就目前来说项目的issue和pr很多,但是开发者似乎不太想要对其进行维护,所以还是先尝试比较成熟稳定的virtualenv/venv方式吧,至于pipenv 以后再进行尝试。
我所考虑的几个问题

  1. 如何创建一个虚拟隔离环境
  2. 如何在虚拟环境中安装包
  3. 如何使用国内的镜像源加速
  4. 如何迁移项目到别的机器上

现在主要在python3中开发,所以就直接使用venv的方式吧,virtualenv和venv方式差不多,如果你是在python2中那么就使用virtualenv吧。

如何创建一个虚拟隔离环境

创建目录,并使用命令创建虚拟环境

mkdir venvtest
cd venvtest
python3 -m venv venttest

我是在windows环境下,执行完上面的命令以后会在venvtest目录下venvtest目录,这个目录下有python3环境的基础标准库,并不包含你在全局环境中安装的第三方包。

调用虚拟环境的\Scripts\activate 命令就可以激活虚拟环境,激活虚拟环境以后,命令行提示符前会显示当前虚拟环境的名字:(venttest) E:\venvtest>

安装第三方库

和全局安装一样,使用pip install 命令,只不过这次是安装到了虚拟环境,如运行pip install requests命令,运行之后再查看venvtest\venttest\Lib\site-packages 中就会有requests库了,但是前提一定要使用activate激活当前的虚拟环境,要不就安装到了全局的python site-packages目录里了。

如何使用国内的镜像源加速

在虚拟机环境中使用pip 读取的是全局的镜像回事配置,就是要创建一个环境变量HOME,然后在HOME环境变量的目录下创建pip目录,再创建一个pip.ini,写入

[global]
index-url = https://mirrors.aliyun.com/pypi/simple

我这里使用的是阿里云的镜像加速。

如何迁移项目到别的机器上

我这里简单使用Flask创建一个hello world的项目

from flask import Flask
app = Flask(__name__)

@app.route('/')
def hello():
 return '欢迎来到我的世界'

在激活虚拟环境的情况下使用flask run 命令来运行服务,此时因为flask安装在虚拟环境中,即使全局python环境中没有flask也可以运行,但一定要在激活虚拟环境的状态。

如何迁移项目

换一个电脑开发或者在多人开发的情况下,需要怎么迁移项目呢?
简单的方式是直接将原虚拟环境直接打包到新的目录,然后修改一个相应的目录配置。
主要是Script\activate.bat 将里面的
set "VIRTUAL_ENV=E:\vtest\venttest" 修改为新的路径。
还有一种方式是在原虚拟环境下备份出第三方库列表,然后在新环境中重新安装。
备份列表命令使用pip freeze > requirements.txt 将该虚拟环境安装的第三方包备份到requirements.txt,在新的环境使用pip install -r requirements.txt 进行安装,使用pip freeze 命令也会同时将第三方库的版本信息备份,这样也保证了迁移以后的前后版本一致。
新电脑上也要安装相同使用的python主环境,如你的虚拟环境是pyhon3,新环境只有python2,那也是不行的。
但是之前做项目的时候对第三方库源码进行了修改,这里也需要同时修改一下。

pycharm项目配置虚拟环境

pycharm 在创建项目的时候可以直接使用venv来创建

python中如何使用虚拟环境

在New environment using 的下拉选项中选择 Virualenv,在Base interpreter 中使用python 3.5 ,这里列出了系统中安装的python版本。如果没有列出的话也可以点击后面的… 来手工选一下。

以上就是python中如何使用虚拟环境的详细内容,更多关于python 虚拟环境的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
如何优雅地处理Django中的favicon.ico图标详解
Jul 05 Python
Django实现表单验证
Sep 08 Python
JSON文件及Python对JSON文件的读写操作
Oct 07 Python
python调用其他文件函数或类的示例
Jul 16 Python
详解用Python为直方图绘制拟合曲线的两种方法
Aug 21 Python
10个python3常用排序算法详细说明与实例(快速排序,冒泡排序,桶排序,基数排序,堆排序,希尔排序,归并排序,计数排序)
Mar 17 Python
Selenium向iframe富文本框输入内容过程图解
Apr 10 Python
使用Keras预训练好的模型进行目标类别预测详解
Jun 27 Python
python 用opencv实现图像修复和图像金字塔
Nov 27 Python
基于python实现监听Rabbitmq系统日志代码示例
Nov 28 Python
python爬虫实现爬取同一个网站的多页数据的实例讲解
Jan 18 Python
详解python的xlwings库读写excel操作总结
Feb 26 Python
Python 3.9的到来到底是意味着什么
Oct 14 #Python
python破解同事的压缩包密码
Oct 14 #Python
如何Tkinter模块编写Python图形界面
Oct 14 #Python
python3实现语音转文字(语音识别)和文字转语音(语音合成)
Oct 14 #Python
如何利用Python 进行边缘检测
Oct 14 #Python
python从Oracle读取数据生成图表
Oct 14 #Python
python获取linux系统信息的三种方法
Oct 14 #Python
You might like
通达OA公共代码 php常用检测函数
2011/12/14 PHP
php通过字符串调用函数示例
2014/03/02 PHP
JS异常处理try..catch语句的作用和实例
2014/05/05 PHP
php源码 fsockopen获取网页内容实例详解
2016/09/24 PHP
PHP实现原生态图片上传封装类方法
2016/11/08 PHP
PHP7 安装event扩展的实现方法
2019/10/08 PHP
PHP图像处理 imagestring添加图片水印与文字水印操作示例
2020/02/06 PHP
PHP随机生成中文段落示例【测试网站内容时使用】
2020/04/26 PHP
开发跨浏览器javascript常见注意事项
2009/01/01 Javascript
15 个 JavaScript Web UI 库
2010/05/19 Javascript
JS获取农历日期具体实例
2013/11/14 Javascript
Seajs的学习笔记
2014/03/04 Javascript
jQuery+ajax实现鼠标单击修改内容的方法
2014/06/27 Javascript
js中各种类型的变量在if条件中是true还是false
2014/07/16 Javascript
JS利用cookie记忆当前位置的防刷新导航效果
2015/10/15 Javascript
jQuery使用$.each遍历json数组的简单实现方法
2016/04/18 Javascript
js实时获取窗口大小变化的实例代码
2016/11/18 Javascript
JS获得多个同name 的input输入框的值的实现方法
2017/01/09 Javascript
浅谈regExp的test方法取得的值变化的原因及处理方法
2017/03/01 Javascript
jquery编写日期选择器
2017/03/16 Javascript
基于Vue的ajax公共方法(详解)
2018/01/20 Javascript
vue实现倒计时获取验证码效果
2020/04/17 Javascript
[02:40]DOTA2英雄基础教程 巨牙海民
2013/12/23 DOTA
[03:57]2016完美“圣”典风云人物:rOtk专访
2016/12/09 DOTA
python代码制作configure文件示例
2014/07/28 Python
Python程序员面试题 你必须提前准备!(答案及解析)
2018/01/23 Python
pandas.dataframe按行索引表达式选取方法
2018/10/30 Python
Python实现的微信支付方式总结【三种方式】
2019/04/13 Python
tensorflow获取预训练模型某层参数并赋值到当前网络指定层方式
2020/01/24 Python
基于matplotlib中ion()和ioff()的使用详解
2020/06/16 Python
查看keras的默认backend实现方式
2020/06/19 Python
JSF如何进行表格处理及取值
2012/08/06 面试题
学习心得体会
2014/01/01 职场文书
会计专业导师推荐信
2014/03/08 职场文书
2016小学新学期寄语
2015/12/04 职场文书
python 爬取吉首大学网站成绩单
2021/06/02 Python