python virtualenv_python开发之virtualenv与virtualenvwrapper讲解

在使用 Python 开发的过程中,工程一多,难免会碰到不同的工程依赖不同版本的库的问题;

亦或者是在开发过程中不想让物理环境里充斥各种各样的库,引发未来的依赖灾难。

此时,我们需要对于不同的工程使用不同的虚拟环境来保持开发环境以及宿主环境的清洁。

这里,就要隆重介绍 virtualenv,一个可以帮助我们管理不同 Python 环境的绝好工具。

virtualenv 可以在系统中建立多个不同并且相互不干扰的虚拟环境。

一、Linux下安装、配置virtualenv

#指定清华源下载pip的包

pip3 install-i https://pypi.tuna.tsinghua.edu.cn/simple virtualenv

#升级pip工具

pip3 install--upgrade pip

1.安装virtualenv

pip3 install virtualenv2.创建目录

mkdir Myproject

cd Myproject3.创建独立运行环境-命名

virtualenv--no-site-packages --python=python3 venv#得到独立第三方包的环境,并且指定解释器是python34.进入虚拟环境

source venv/bin/activate#此时进入虚拟环境(venv)Myproject5.安装第三方包

(venv)Myproject: pip3 install django==1.9.8#此时pip的包都会安装到venv环境下,venv是针对Myproject创建的6.退出venv环境

deactivate命令7.

virtualenv是如何创建“独立”的Python运行环境的呢?原理很简单,就是把系统Python复制一份到virtualenv的环境,用命令source venv/bin/activate进入一个virtualenv环境时,virtualenv会修改相关环境变量,让命令python和pip均指向当前的virtualenv环境。

二、确保开发环境的一致性

1.假设我们在本地开发环境,准备好了项目+依赖包环境2.现在需要将项目上传至服务器,上线发布3.那么就要保证服务器的python环境一致性

解决方案:

1.通过命令保证环境的一致性,导出当前python环境的包

pip3 freeze>requirements.txt

这将会创建一个 requirements.txt 文件,其中包含了当前环境中所有包及 各自的版本的简单列表。

可以使用 “pip list”在不产生requirements文件的情况下, 查看已安装包的列表。2.上传至服务器后,在服务器下创建virtualenv,在venv中导入项目所需的模块依赖

pip3 install-r requirements.txt

三、虚拟环境之virtualenvwrapper

virtualenv 的一个最大的缺点就是:

每次开启虚拟环境之前要去虚拟环境所在目录下的 bin 目录下 source 一下 activate,这就需要我们记住每个虚拟环境所在的目录。

并且还有可能你忘记了虚拟环境放在哪。。。

一种可行的解决方案是,将所有的虚拟环境目录全都集中起来,例如/opt/all_venv/,并且针对不同的目录做不同的事。

使用virtualenvwrapper管理你的虚拟环境(virtualenv),其实他就是统一管理虚拟环境的目录,并且省去了source的步骤。

步骤1:安装virtualenvwrapper

pip3 install virtualenvwrapper

步骤2:设置Linux的环境变量,每次启动就加载virtualenvwrapper

把下面两行代码添加到 ~/.bashrc文件中

打开文件

vim~/.bashrc

写入以下两行代码

export WORKON_HOME=~/Envs #设置virtualenv的统一管理目录

export VIRTUALENVWRAPPER_VIRTUALENV_ARGS='--no-site-packages'#添加virtualenvwrapper的参数,生成干净隔绝的环境

export VIRTUALENVWRAPPER_PYTHON=/opt/python347/bin/python3 #指定python解释器

source/opt/python34/bin/virtualenvwrapper.sh #执行virtualenvwrapper安装脚本

读取文件,使得生效,此时已经可以使用virtalenvwrapper

source~/.bashrc

步骤3:基本使用virtualenvwrapper

创建一个虚拟环境:

$ mkvirtualenv my_django115

这会在~/Envs 中创建 my_django115 文件夹。

在虚拟环境上工作:激活虚拟环境my_django115

$ workon my_django115

再创建一个新的虚拟环境

$ mkvirtualenv my_django2

virtualenvwrapper 提供环境名字的tab补全功能。

当有很多环境, 并且很难记住它们的名字时,这就显得很有用。

workon还可以任意停止你当前的环境,可以在多个虚拟环境中来回切换

workon django1.15workon django2.0也可以手动停止虚拟环境

deactivate

删除虚拟环境,需要先退出虚拟环境

rmvirtualenv my_django115

步骤四:常用其他命令

lsvirtualenv

列举所有的环境。

cdvirtualenv

导航到当前激活的虚拟环境的目录中,比如说这样您就能够浏览它的 site-packages 。

cdsitepackages

和上面的类似,但是是直接进入到 site-packages 目录中。

lssitepackages

显示 site-packages 目录中的内容。

完整官网介绍:https://virtualenvwrapper.readthedocs.io/en/latest/command_ref.html

图解

二、Mac下创建pycharm

第二步:

第三步:此时这里的Django环境是虚拟环境的版本

第四步:检查venv下的django版本

第五步:添加已创建的虚拟环境venv的python解释器,至pycharm,用于创建1.98指定版本的django

第六步:成功启动1.98版本的django

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/507093.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

android 自定义 popupwindow,Android自定义弹出窗口PopupWindow使用技巧

PopupWindow是Android上自定义弹出窗口,使用起来很方便。PopupWindow的构造函数为public PopupWindow(View contentView, int width, int height, boolean focusable)contentView为要显示的view,width和height为宽和高,值为像素值&#xff0c…

python花萼长度表_python描述性统计实践

1、加载相关库和数据集使用的库主要有:pandas、numpy、sklearn、matplotlib、seaborn使用的数据集:sklearn库中的鸢尾花数据集import pandas as pdimport numpy as npfrom sklearn.datasets import load_irisimport matplotlib.pyplot as pltimport seab…

android lottie字体json,Android 动画深入Lottie

image.png如果现在有需求,让这个小人做出拳击动作你应该如何做? 传统方法会写一大堆的路径值做路径动画,不好调试代码臃肿并且麻烦,那么有简单方法吗 有! SVG 和 Lottie 可以胜任 SVG编辑麻烦美工不太会弄,那么我们用Lottie 下面…

android 搜索工具栏,Android记事本在菜单栏添加搜索按钮方法

效果图这个app结构和我之前将记事本开发的博客基本一致,我这里直接讲一下怎样添加使用的开发软件为android studio首先在res目录下新建文件夹menu,添加目录布局文件main_menu之后在main_menu中添加如下代码xmlns:app"http://schemas.android.com/ap…

5分钟k线数据 存储_成功率极高的“分时K线战法”:15分钟K线战法+30分钟K线战法...

实战看盘最常用的就是日、周、月等K线图。这些图形对于我们分析个股走势的确帮助很大,然而遇到调整时,就显示了其宏观有余、微观不足的缺点。但假如我们用分时K线图进行微观的观察与分析,就可以找到一些个股在调整中的规律,比如15…

python redis模块常用_python-Redis模块常用的方法汇总

Redes模块常用的方法汇总一.创建建Redis对象1.直接使用import redisr redis.Redis(host127.0.0.1, port6379)2.连接池使用import redispool redis.ConnectionPool(host127.0.0.1, port6379)r redis.Redis(connection_poolpool)3.库的选择import redisr redis.Redis(db0) #第…

android camera 显示过程,Android Camera2 API显示已处理的预览图像

澄清问题后编辑;最初的答案在底部取决于您在哪里进行处理.如果您正在使用RenderScript,则可以将Surface从SurfaceView或TextureView连接到分配(使用setSurface),然后将处理后的输出写入该分配并使用Allocation.ioSend()将其发送出去. HDR Viewfinder demo使用这种方法.如果您正…

android布局的属性,android

第一类:属性值为true或falseandroid:layout_centerHrizontal 水平居中android:layout_centerVertical 垂直居中android:layout_centerInparent 相对于父元素完全居中android:layout_alignParentBottom 贴紧父元素的下边缘android:layout_alignParentLeft 贴紧父元素的左…

python旋转排序数组_LeetCode(力扣)——Search in Rotated Sorted Array 搜索旋转排序数组 python实现...

题目描述:python实现Search in Rotated Sorted Array 搜索旋转排序数组中文:假设按照升序排序的数组在预先未知的某个点上进行了旋转。( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] )。搜索一个给定的目标值,如果数组中…

nfc卡模式与标准模式_张家口市环卫进入首都标准“京环模式”

“路上看不见垃圾,垃圾箱更卫生了,路边公共设施齐全了。”喜欢晨练的王先生最近格外喜欢在河边便道上散步,切身感受城市环境面貌改善带来的获得感。而这背后,除了环卫工作者的付出,也见证了张家口市城乡环卫一体化项目…

pyqt 取鼠标处文字_爱剪辑:炫彩的动态标题文字特效,这招让视频片头LOGO更酷炫...

爱剪辑学习委员会提醒您:道路千万条,学习第一条。教程不学会,制作两行泪。今天教大家制作炫彩的动态标题文字特效,3步即可快速学会,让你立马不再流泪。爱剪辑官网下载:http://www.aijianji.com/爱剪辑LOGO效…

android studio 搭建环境,Android studio搭建xposed环境

一、环境准备xposed:https://repo.xposed.info/module/de.robv.android.xposed.installerxposed-api:https://forum.xda-developers.com/xposed/xposed-api-changelog-developer-news-t2714067二、环境搭建Android studio选择->Empty Actvity将api.ja…

强化学习原理与python实现原理pdf_纯Python实现!Facebook发布PyTorch分布式强化学习库...

图灵TOPIA来源:Facebook编译:刘静图灵联邦编辑部出品Facebook于近日发布了PyTorch中用于强化学习(RL)研究的平台:TorchBeast。TorchBeast实现了流行的IMPALA算法的一个版本,用于RL代理的快速、异步、并行训练。另外,To…

鸿蒙开发还可以用安卓,华为鸿蒙2.0可以替代安卓吗,华为鸿蒙2.0优势在哪

在华为开发者大会上,华为消费业务CEO 余承东,正式发布鸿蒙OS2.0,并宣布华为鸿蒙OS将全面启用全场景生态,并将于2020年12月发布手机版。余承东还表示,明年,华为的智能手机将全面升级,以支持鸿蒙操…

深入浅出强化学习_直播 | 深入浅出理解 A3C 强化学习

强化学习是一种比较传统的人工智能手段,在近年来随着深度学习的发展,强化学习和深度学习逐渐结合在了一起。这种结合使得很多原来无法想象的工作有了可能,最令我们瞩目的莫过于 AlphaGo 战胜李世石,以及 OpenAI 团队的机器人可以在…

鸿蒙os2.0公测机型,鸿蒙OS2.0第二期第三期公测机型陆续公布 麒麟980和麒麟820将登场...

继官方透露鸿蒙OS2.0将开始大规模推送之后,在第一批为华为Mate X2,Mate40系列等系列机型推送后,近期官方再次开启了鸿蒙系统(HarmonyOS 20开发者Beta)的第二期公测,在原有机型的基础上再次增加了nova系列的6款机型,根据…

python 天气雷达_python结合API实现即时天气信息

python结合API实现即时天气信息import urllib.requestimport urllib.parseimport json"""利用“最美天气”抓取即时天气情况http://www.zuimeitianqi.com/"""class ZuiMei():def __init__(self):self.url http://www.zuimeitianqi.com/zuimei/q…

qq接入和分享android,Android社交登录授权、分享SDK,支持微信、微博和QQ

社交登录授权,分享SDK支持微信、微博、QQ登录授权微信好友、微信朋友圈、微博、QQ好友、QQ空间分享Gradlecompile com.elbbbird.android:socialsdk:0.2.0aar使用指南Debug模式SocialSDK.setDebugMode(true); //默认false平台SSO授权功能ISocialOauthCallback授权回调…

如何截取_【实用技巧】如何截取网页长图

最近需要截取一个网页长图,搜了下发现 Chrome 浏览器实现起来比较简单,顺便记录分享下。准备:Chrome 浏览器【1】用 Chrome 浏览器打开网页【2】按下 F12 进入开发者工具页面【3】点击工具栏中“切换设备”选项(图标看着像手机/Pad)【4】左侧…

三星升级android9,没买的不必看!三星手机各机升级Android 9.0 时间表

原标题:没买的不必看!三星手机各机升级Android 9.0 时间表在此之前Samsung 在Samsung 的会员应用程序中给我们公布了旗下设备在什么时间节点升级至Android 9.0系统的路线图。用户更新至最新的Android 9.0之后,用户将会得到全新的One UI&#…