• python虚拟环境管理之Pipenv X


    GitHub:pypa/pipenv: Python Development Workflow for Humans. (github.com)

    介绍:

    pipenv就是把pip和virtualenv包装起来的一个便携工具,它会自动为您的项目创建和管理virtualenv,以及在安装/卸载软件包时添加/删除Pipfile中的软件包。

    使用pipenv管理python环境虚拟环境的优势:

      不再需要分开使用pip和virtualenv,合并到了一起
      不再需要管理requirements.txt,pipenv install xxx安装包时自动生成版本号、Hash值、包依赖关系到Pipfile和Pipfile.lock,并且可以手工编辑以区分开发环境和生产环境
      使用Hash校验安装的包,有利于主动暴露安全问题
      使用最新版本的依赖项,以最大限度地降低过时组件带来的安全风险
      可以图形化显示包之间的依赖关系(pipenv graph)
      通过加载.env文件简化开发工作流程

    安装:

       前提: 已经成功安装了python与pip

    linux:
    pip3 install pipenv
    
    
    mac:
    brew install pipenv

    pipenv依赖psutil, virtualenv-clone, pew, certifi, urllib3, chardet, requests, mccabe, pyflakes, pycodestyle, flake8等第三方模块,pipenv有很漂亮的彩色终端界面。

    安装成功之后,会生成两个文件:Pipfile和 Pipfile.lock

    文件说明:

      Pipfile:显示项目环境和依赖包

    [[source]]
    name = "pypi"
    url = "https://mirrors.aliyun.com/pypi/simple/"  # 指定国内pip源,不然会慢死人的
    verify_ssl = true
    
    [dev-packages]  # 开发环境
    
    [packages]  # 生产环境
    requests = "*"  # *表示最新版本
    django = "*"
    
    [requires]
    python_version = "3.7"  # python版本

      Pipfile.lock:详细记录环境依赖, 并利用hash算法保证他完整对应关系

    {
        "_meta": {
            "hash": {
                "sha256": "d737a1ef2f8b591f86cd0fa6a8cb48918f742d60df2a394ebc3d23aff4748999"
            },
            "pipfile-spec": 6,
            "requires": {
                "python_version": "3.7"
            },
            "sources": [
                {
                    "name": "pypi",
                    "url": "https://pypi.org/simple",
                    "verify_ssl": true
                }
            ]
        },
        "default": {
            "certifi": {
                "hashes": [
                    "sha256:47f9c83ef4c0c621eaef743f133f09fa8a74a9b75f037e8624f83bd1b6626cb7",
                    "sha256:993f830721089fef441cdfeb4b2c8c9df86f0c63239f06bd025a76a7daddb033"
                ],
                "version": "==2018.11.29"
            },
            "chardet": {
                "hashes": [
                    "sha256:84ab92ed1c4d4f16916e05906b6b75a6c0fb5db821cc65e70cbd64a3e2a5eaae",
                    "sha256:fc323ffcaeaed0e0a02bf4d117757b98aed530d9ed4531e3e15460124c106691"
                ],
                "version": "==3.0.4"
            },
            "django": {
                "hashes": [
                    "sha256:a32c22af23634e1d11425574dce756098e015a165be02e4690179889b207c7a8",
                    "sha256:d6393918da830530a9516bbbcbf7f1214c3d733738779f06b0f649f49cc698c3"
                ],
                "index": "pypi",
                "version": "==2.1.5"
            },
            "idna": {
                "hashes": [
                    "sha256:c357b3f628cf53ae2c4c05627ecc484553142ca23264e593d327bcde5e9c3407",
                    "sha256:ea8b7f6188e6fa117537c3df7da9fc686d485087abf6ac197f9c46432f7e4a3c"
                ],
                "version": "==2.8"
            },
            "pytz": {
                "hashes": [
                    "sha256:32b0891edff07e28efe91284ed9c31e123d84bea3fd98e1f72be2508f43ef8d9",
                    "sha256:d5f05e487007e29e03409f9398d074e158d920d36eb82eaf66fb1136b0c5374c"
                ],
                "version": "==2018.9"
            },
            "requests": {
                "hashes": [
                    "sha256:502a824f31acdacb3a35b6690b5fbf0bc41d63a24a45c4004352b0242707598e",
                    "sha256:7bf2a778576d825600030a110f3c0e3e8edc51dfaafe1c146e39a2027784957b"
                ],
                "index": "pypi",
                "version": "==2.21.0"
            },
            "urllib3": {
                "hashes": [
                    "sha256:61bf29cada3fc2fbefad4fdf059ea4bd1b4a86d2b6d15e1c7c0b582b9752fe39",
                    "sha256:de9529817c93f27c8ccbfead6985011db27bd0ddfcdb2d86f3f663385c6a9c22"
                ],
                "version": "==1.24.1"
            }
        },
        "develop": {}
    }

    使用方式:

    pipenv install requests
    安装包
    
    pipenv --python 3.7 指定某个python版本
    pipenv --python  <path/to/python>  指定某个python路径
    
    进入虚拟环境:
    pipenv shell
    
    退出虚拟环境:
    exit
    注意:不要使用deactivate, 否则下次进入的时候 就会发生报错
    
    删除虚拟环境:
    pipenv --rm

    注意点:

    • 平时安装和卸载包的时候不需要先进入或退出虚拟环境,直接在项目文件下pipenv install/uninstall xxx就行了
    • 退出虚拟环境不要deactivate,请使用exit,否则下次pipenv进入的时候就会报如下错
    [root@shiyanlou myproject]# pipenv shell
    Shell for UNKNOWN_VIRTUAL_ENVIRONMENT already activated.
    No action taken to avoid nested environments.
    [root@shiyanlou myproject]#
    pipenv --rm并不会删除生成的Pipfile和Pipfile.lock

    管理开发环境:

    通常有一些Python包只在你的开发环境中需要,而不是在生产环境中,例如单元测试包。 Pipenv使用–dev标志区分两个环境。也就是说一个–dev参数,帮你在同一个虚拟环境中又区分出了开发和非开发环境。

    $ pipenv install --dev pytest

    在虚拟环境中运行命令,使用run参数,提供要运行的命令:

    $ pipenv run python manage.py runserver

    这将使用当前虚拟环境关联的Python解释器,执行命令。或者简单的执行脚本

    $ pipenv run python your_script.py

    冻结Pipfile,相当于将项目所使用的第三方库列表进行打包输出,类似于virtualenv中生成requirements.txt文件。通过更新Pipfile.lock来冻结库名称及其版本,以及其依赖关系的列表。需要使用lock参数:

    [root@shiyanlou myproject]# pipenv lock
    Locking [dev-packages] dependencies…
    Locking [packages] dependencies…
    ✔ Success!
    Updated Pipfile.lock (748999)!
    [root@shiyanlou myproject]#

     常用命令:

    # 定位项目路径
    pipenv --where
    
    # 定位虚拟环境
    pipenv --venv
    
    # 定位python解释器
    pipenv --py
    
    # 显示依赖关系
    pipenv graph
    
    # 卸载所有包
    pipenv uninstall --all
    
    # 检查安全漏洞
    pipenv check
    
    # 在虚拟化宁中运行命令
    pipenv run "python manage.py runserver 0.0.0.0:8080"
    
    # 卸载当前所有包, 并安装他们的最新版本
    pipenv  update
    
    
    # 通过requirements.txx文件安装包(这样我们可以重用之前的requirement.txt 文件来构建我们新的开发环境,把我们的项目顺利的迁到pipenv。)
    pipenv install -r requirements.txt
    # 生成requirements.txt
    pipenv lock -r > requirements.txt
    pipenv lock -r --dev >requirements.txt 指定--dev参数, 只安装dev-packages下的包, 如果不指定, 会安装packages下的所有模块 Options:
    --where 显示项目文件所在路径 --venv 显示虚拟环境实际文件所在路径 --py 显示虚拟环境Python解释器所在路径 --envs 显示虚拟环境的选项变量 --rm 删除虚拟环境 --bare 最小化输出 --completion 完整输出 --man 显示帮助页面 --three / --two 使用Python 3/2创建虚拟环境(注意本机已安装的Python版本) --python TEXT 指定某个Python版本作为虚拟环境的安装源 --site-packages 附带安装原Python解释器中的第三方库 --jumbotron An easter egg, effectively. --version 版本信息 -h, --help 帮助信息

    在线学习:Pipenv playground | rootnroll

  • 相关阅读:
    Java 连接 Memcached 服务
    Memcached命令-存储命令-查找命令-清理命令
    memcache安装
    Python爬虫模拟登录带验证码网站
    HashMap原理
    redis 在java中的使用
    redis 事务
    Redis命令续
    Redis命令
    ApplicationListener用法
  • 原文地址:https://www.cnblogs.com/xingxia/p/python_pipenv.html
Copyright © 2020-2023  润新知