zoukankan      html  css  js  c++  java
  • Python--pipenv

    一、Python包管理历史
    最初的时候,我们有了Python,但是没有干净的方法来安装软件包,早期的时候,当用户想安装包时,需要先从网上把文件下载下来,解压,然后执行Python setup.py install,就能将包安装好。
    后来有了PyPI,开发者可以把他们的包上传到上面,然后其他开发者可以从这里下载他们需要的包,然后再执行python setup.py install 进行安装,但是这样还是存在许多的问题,比如说:整个过程需要人工,不方便自动化,无法安装多个不同版本等等。
    再后来有了easy_install,当用户想要安装某个包的是否,只要执行easy_install 包名,工具就会自动把包以及依赖下载下来进行安装,这解决了无法自动化的问题,但是这种方法又带来了新的问题,只能安装,却没有方法卸载。
    到了2008年,pip出现了,还引入了requirements files的概念,可以使用户非常方便的复制Python环境。比如说安装某个包,执行pip install 包名,需要卸载,执行pip uninstall 包名,需要批量安装,执行pip install -r requirements.txt。直到现在,pip已经成为非常好用的包管理工具了。pip解决了单个环境下的包管理问题,但是如果我们需要在一台机器上开发多个项目,这多个项目用到了相同包的不同版本,这就成了非常棘手的问题了。
    为了解决这个问题,virtualenv出现了。virtualenv可以为每个项目创建一套隔离的Python环境,再使用pip进行包管理。目前pip+virtualenv是目前比较主流的Python开发流程。慢慢的这种方式也逐渐暴露出了缺点,比如pip的requirements.txt过于简单,没办法表示具体的依赖关系,需要使用两个工具(pip+virtualenv)才能完成工作。
    为了解决这两个问题pipenv登场了,它主要使用pipfile来取代之前的requirements.txt,pipfile比requirements.txt表达能力更强,默认支持两种依赖,可以将多个requirements.txt的内容合并到一起,方便管理,并且通过pipfile.lock对环境进行明确,详细的描述。pipenv可以让你无缝的使用pipfile,pipfile.lock,保证每个依赖的信息都是明确的,它提供简洁的命令操作virtualenv,并且提供很多辅助工具,比如pipenv graph,可以显示项目的完整依赖关系。
    目前Pipenv已经是Python官方推荐的工作流工具了。
     
    二、Pipenv实操
    目前pycharm2018.2.4版本以上已经支持pipenv了。
    1.首先打开命令行:输入pip install pipenv 安装pipenv库。
    2.pycharm配置。
     
    三、pipenv命令详解
    pip install --user --upgrade pipenv # 用户安装pipenv
    pipenv --three # 会使用当前系统的Python3创建环境
    pipenv --two # 使用python2创建
    pipenv --python 3.6 指定某一Python版本创建环境
    pipenv run python 文件名 pipenv run pip ...# 运行pip
    pipenv shell 激活虚拟环境
    pipenv --where 显示目录信息
    pipenv --venv 显示虚拟环境信息
    pipenv --py 显示Python解释器信息
    pipenv install requests 安装相关模块并加入到Pipfile
    pipenv install django==1.11 安装固定版本模块并加入到Pipfile
    pipenv graph # 显示依赖图
    pipenv check #检查安全漏洞
    pipenv lock # 生成lockfile
    pipenv update # 更新所有的包
    pipenv --rm # 删除虚拟环境
    pipenv uninstall requests # 卸载包并从Pipfile中移除
    pipenv uninstall --all # 卸载全部包
     

  • 相关阅读:
    java Activiti 工作流引擎 SSM 框架模块设计方案
    自定义表单 Flowable 工作流 Springboot vue.js 前后分离 跨域 有代码生成器
    数据库设计的十个最佳实践
    activiti 汉化 stencilset.json 文件内容
    JAVA oa 办公系统模块 设计方案
    java 考试系统 在线学习 视频直播 人脸识别 springboot框架 前后分离 PC和手机端
    集成 nacos注册中心配置使用
    “感恩节 ”怼记
    仓颉编程语言的一点期望
    关于System.out.println()与System.out.print("\n")的区别
  • 原文地址:https://www.cnblogs.com/absoluteli/p/14090321.html
Copyright © 2011-2022 走看看