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

作者:pfm685757 时间:2023-08-26 00:59:06 

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

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,当你要同时开发多个项目的时候,这个是必不可少的。

来源:https://blog.csdn.net/pfm685757/article/details/108590680

标签:pycharm,Make,available,to,all,projects
0
投稿

猜你喜欢

  • Win10用vscode打开anaconda环境中的python出错问题的解决

    2023-04-21 09:21:21
  • Python Learning 列表的更多操作及示例代码

    2022-11-15 01:05:33
  • PyTorch CUDA环境配置及安装的步骤(图文教程)

    2022-06-19 14:00:28
  • 解决新django中的path不能使用正则表达式的问题

    2021-06-09 18:45:21
  • Python获取CPU、内存使用率以及网络使用状态代码

    2023-03-14 22:43:36
  • 基于标准的web项目开发模式探索

    2013-12-12 15:05:25
  • Python中装饰器的基本功能理解

    2021-05-26 05:17:56
  • Mysql升级到5.7后遇到的group by查询问题解决

    2024-01-16 12:17:50
  • 在js中的replace方法详解

    2007-08-21 15:47:00
  • Django model重写save方法及update踩坑详解

    2021-01-21 08:45:52
  • Varchar与char的区别

    2008-02-28 12:44:00
  • python 搭建简单的http server,可直接post文件的实例

    2021-08-25 15:07:39
  • 将Django使用的数据库从MySQL迁移到PostgreSQL的教程

    2024-01-26 20:09:26
  • asp如何实现网上考试功能?

    2010-05-24 18:32:00
  • wxpython布局的实现方法

    2022-01-31 10:20:57
  • python实现的汉诺塔算法示例

    2023-09-21 11:28:17
  • 基python实现多线程网页爬虫

    2023-10-30 00:58:48
  • Access创建一个简单MIS多媒体管理系统

    2008-10-13 12:31:00
  • 模拟下拉菜单[兼容IE系列以及火狐]

    2009-12-13 10:23:00
  • 如何清除Vbscript惹出来的中文乱码?

    2010-01-18 20:50:00
  • asp之家 网络编程 m.aspxhome.com