深入浅析pycharm中 Make available to all projects的含义


Posted in Python onSeptember 15, 2020

一、为什么要进行包管理?

python中的三方包琳琅满目,提供了各种各样的功能,使得我们免于自己去手写很多代码。比如,我们在测试接口的时候,我们用到了request,我们在测试前端页面的时候,我们用到了webdriver的包,移动UI自动化测试我们用到了airtest的包,诸如此类,不胜枚举。于是,我们在“天长地久”的使用过程中,积累的三方包越来越多,具体有多少,大家可以在命令行执行pip list看一下,数量可能超出自己的想象哦。那么现在,领导给你一个任务,让你开发一个项目,开发完之后,部署到公共的服务器上面。对于这个场景的包管理,我认为有不少人是这么做的:先在本地开发完成,然后使用pip freeze >requirements.txt生成依赖包列表文件。然后将代码放到服务器上之后,继续使用pip install -r requirements.txt在服务器上将依赖包安装好。当然,你的代码跑的66的。但是,在这个项目之前,你可能已经做了很多其他的项目,那些项目也有很多当前项目用不到的依赖包,如果不考虑环境隔离,按照上面的方式去做,当前项目的依赖包就不仅仅是当前项目的依赖包了。也就是说你当前的项目可能只需要10个三方包,你可能装了100个,严重浪费了时间和空间。另外,你的A项目使用django 1.8,另外一个B项目使用django 2.1,怎么实现呢?这种情况下,每个应用可能需要各自拥有一套“独立”的Python运行环境。virtualenv就是用来为一个应用创建一套“隔离”的Python运行环境。

综上,包管理要解决的痛点就是:

1、不必要的包的安装,浪费时间

2、项目之间的依赖包隔离

二、怎么做

1、命令行 先安装虚拟环境模块

pip3 install virtualenv # 安装virtualenv

进入项目目录,创建python虚拟环境

cd haima_api

virtualenv --no-site-packages myvenv # myenv是虚拟环境名字,随便取

这样我们就创建好了haima_api项目的虚拟环境,参数--no-site-packages,这样,已经安装到系统Python环境中的所有第三方包都不会复制过来。

激活虚拟环境

source myvenv/bin/activate

激活之后,命令行最前面会加上一个标识。如下。

深入浅析pycharm中 Make available to all projects的含义

这个时候,在命令行下面执行pip install安装后的包就只会安装到刚刚创建的虚拟环境下,只和当前的项目挂钩,与其他项目无关了。

2、使用pycharm

我们开发的时候,更多会使用到pycharm这个ide,新建项目的时候选择虚拟环境即可

深入浅析pycharm中 Make available to all projects的含义

pycharm使用虚拟环境创建项目

inherit global site-packages:勾选上的话代表创建的新项目需要copy一份全局包到虚拟环境。

Make available to all projects:勾选上,表示,当在虚拟环境下安装包的时候,copy一份到全局。

前面文章中一只提到了全局包和虚拟环境里的包,在此解释一下他们的存放位置:

全局包存放在python安装目录下的\Lib\site-packages子目录里。

虚拟环境包安装在关联的项目目录下面的\${虚拟环境名}\Lib\site-packages子目录里

三、项目部署时批量导包

  •  在当前虚拟环境下,通过pip freeze > requirements.txt(名字随意)
  • 在目标服务器上执行,pip install requirements.txt即可

综上,python项目间的包管理就是这么easy,当你要同时开发多个项目的时候,这个是必不可少的。

到此这篇关于深入浅析pycharm中 Make available to all projects的含义的文章就介绍到这了,更多相关pycharm Make available to all projects内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
python使用pil生成缩略图的方法
Mar 26 Python
Django中实现点击图片链接强制直接下载的方法
May 14 Python
用Python计算三角函数之acos()方法的使用
May 15 Python
20招让你的Python飞起来!
Sep 27 Python
答题辅助python代码实现
Jan 16 Python
python按行读取文件,去掉每行的换行符\n的实例
Apr 19 Python
对Python实现累加函数的方法详解
Jan 23 Python
Python 使用 attrs 和 cattrs 实现面向对象编程的实践
Jun 12 Python
Flask框架学习笔记之使用Flask实现表单开发详解
Aug 12 Python
Python视频编辑库MoviePy的使用
Apr 01 Python
python绕过图片滑动验证码实现爬取PTA所有题目功能 附源码
Jan 06 Python
python爬虫scrapy基于CrawlSpider类的全站数据爬取示例解析
Feb 20 Python
pycharm-professional-2020.1下载与激活的教程
Sep 21 #Python
有关pycharm登录github时有的时候会报错connection reset的问题
Sep 15 #Python
Pycharm Git 设置方法
Sep 15 #Python
2020版Python学习路线图(附学习资料)
Sep 15 #Python
关于Kotlin中SAM转换的那些事
Sep 15 #Python
Python二元算术运算常用方法解析
Sep 15 #Python
Python实现像awk一样分割字符串
Sep 15 #Python
You might like
PHP SQLite类
2009/05/07 PHP
php获取Google机器人访问足迹的方法
2015/04/15 PHP
php写一个函数,实现扫描并打印出自定目录下(含子目录)所有jpg文件名
2017/05/26 PHP
用jquery实现学校的校历(asp.net+jquery ui 1.72)
2010/01/01 Javascript
js下获得客户端操作系统的函数代码(1:vista,2:windows7,3:2000,4:xp,5:2003,6:2008)
2011/10/31 Javascript
经过绑定元素时会多次触发mouseover和mouseout事件
2014/02/28 Javascript
JavaScript调用ajax获取文本文件内容实现代码
2014/03/28 Javascript
JS与jQuery遍历Table所有单元格内容的方法
2015/12/07 Javascript
IE6-IE9使用JSON、table.innerHTML所引发的问题
2015/12/22 Javascript
JS通过Cookie判断页面是否为首次打开
2016/02/05 Javascript
Bootstrap Fileinput文件上传组件用法详解
2016/05/10 Javascript
AngularJS $injector 依赖注入详解
2016/09/14 Javascript
微信小程序实现动态设置placeholder提示文字及按钮选中/取消状态的方法
2017/12/14 Javascript
Vue基础配置讲解
2019/11/29 Javascript
vue引入静态js文件的方法
2020/06/20 Javascript
vue 使用微信jssdk,调用微信相册上传图片功能
2020/11/13 Javascript
原生JavaScript实现轮播图
2021/01/10 Javascript
[03:59]5分钟带你了解什么是DOTA2(第二期)
2017/02/07 DOTA
python编写暴力破解FTP密码小工具
2014/11/19 Python
解决使用export_graphviz可视化树报错的问题
2019/08/09 Python
Python实现打印实心和空心菱形
2019/11/23 Python
Python Matplotlib绘图基础知识代码解析
2020/08/31 Python
纯CSS实现设置半个字符的样式
2014/07/03 HTML / CSS
HTML5之SVG 2D入门2—图形绘制(基本形状)介绍及使用
2013/01/30 HTML / CSS
全球最大的服务市场:Fiverr
2017/01/03 全球购物
美国时尚在线:Showpo
2017/09/08 全球购物
美国五金商店:Ace Hardware
2018/03/27 全球购物
Python里面search()和match()的区别
2016/09/21 面试题
学前班评语大全
2014/05/04 职场文书
小学语文教学经验交流材料
2014/06/02 职场文书
2015年超市收银员工作总结
2015/04/25 职场文书
运动会三级跳加油稿
2015/07/21 职场文书
初中化学教学反思
2016/02/22 职场文书
JavaScript阻止事件冒泡的方法
2021/12/06 Javascript
《艾尔登法环》1.03.3补丁上线 碎星伤害调整
2022/04/06 其他游戏
Python 的演示平台支持 WSGI 接口的应用
2022/04/20 Python