python工作流的选择

pypa (Python Packaging Authority) 管理python相关的工具链(pypi, virtualenv,pip)

pypa

python的开发工具流

虚拟环境管理 (隔离不同的项目)

依赖管理 (方便部署, 安装)

打包发布 (setuptools 上传到pypi) -- (setup.py)

pipenv 虚拟环境管理

pipenv 是 python 官方推荐的包管理工具,集成了 virtualenvpyenvpip 三者的功能于一身, 类似于 php 中的 composer

不再单独使用 virtualenv、pyenv 和 pip 了,现在它们结合到了一起。

不用再维护 requirement.txt 了,使用 Pipfile 和 Pipfile.lock 来代替。

可以在开发环境使用多个 python 版本。

在安装的 pyenv 条件下,可以自动安装需要的 python 版本。

安全,广泛地使用 Hash 校验,能够自动曝露安全漏洞。

随时查看图形化的依赖关系。
  • 安装

安装到自己的目录下:

 pip3 install --user pipenv  (安装到用户home/.local下)

查看当前用户目录:

python -m site --user-base

环境变量设置:

PATH=$HOME/.local/bin
export PATH

shell 自动补齐

.bashrc 中加入
    eval "$(pipenv --completion)"
  • 常用命令

    $ pipenv Usage: pipenv [OPTIONS] COMMAND [ARGS]…

      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       帮助信息
    
    
        
      Commands:
        check      检查安全漏洞
        graph      显示当前依赖关系图信息
        install    安装虚拟环境或者第三方库
        lock       锁定并生成Pipfile.lock文件
        open       在编辑器中查看一个库
        run        在虚拟环境中运行命令
        shell      进入虚拟环境
        uninstall  卸载一个库
        update     卸载当前所有的包,并安装它们的最新版本
    
  • 使用

     1) 创建  pipenv install pkg --python=3.6
       
     2) 激活  pipenv shell
       
           To activate this project's virtualenv, run pipenv shell.
       
     3) 退出  exit
       
     4) 运行任务 pipenv run python demo.py (会根据Pipe文件, 激活虚拟环境运行)
    
  • Pipfile vs requiremnets.txt

      [[source]]    # 仓库地址
      url = "https://pypi.org/simple"
      verify_ssl = true
      name = "pypi"
        
          # url = "https://mirrors.aliyun.com/pypi/simple"
          # 除了修改Pipfile
            
          # 也可以在执行安装命令时通过--pypi-mirror选项指定PyPI源
          # pipenv install --pypi-mirror https://mirrors.aliyun.com/pypi/simple
            
          # 也可以设置环境变量PIPENV_PYPI_MIRROR
        
      [packages]     #   项目依赖包
      "urllib3" = "*"
        
      [dev-packages]  # 开发环境需要的包
        
      [requires]
      python_version = "3.6"
    
  • Pipefile.lock 系统信息,所有已安装包的依赖包及其版本信息,以及所有安装包及其依赖包的 Hash 校验信息

{
    "_meta": {
        "hash": {
            "sha256": "af58f3510cb613d4d9241128f9a0ceb9bb936ad907543e23ad8317011dcb6715"
        },
        "pipfile-spec": 6,
        "requires": {
            "python_version": "3.6"
        },
        "sources": [
            {
                "name": "pypi",
                "url": "https://pypi.org/simple",
                "verify_ssl": true
            }
        ]
    },
    "default": {                
         "urllib3": {
            "hashes": [
                "sha256:a68ac5e15e76e7e5dd2b8f94007233e01effe3e50e8daddf69acfd81cb686baf",
                "sha256:b5725a0bd4ba422ab0e66e89e030c806576753ea3ee08554382c14e685d117b5"
            ],
            "index": "pypi",
            "version": "==1.23"
        }
    },
    "develop": {}
}

  • 添加额外的环境变量 .env 文件

      Loading .env environment variables…
      (密钥token, 配置密码等)
    
      # .env
      PROXY=PROXY
    
Buy me a 肥仔水!