菜单 学习猿地 - LMONKEY

VIP

开通学习猿地VIP

尊享10项VIP特权 持续新增

知识通关挑战

打卡带练!告别无效练习

接私单赚外块

VIP优先接,累计金额超百万

学习猿地私房课免费学

大厂实战课仅对VIP开放

你的一对一导师

每月可免费咨询大牛30次

领取更多软件工程师实用特权

入驻
0
0

Python 项目中使用 pipenv 来管理扩展依赖

原创
05/13 14:22
阅读数 584

什么是 『pipenv』?

下面列出了一些其他语言包管理工具:

  • Ruby
    • bundler
  • PHP
    • composer
  • NodeJS
    • npm
    • yarn
  • Rust
    • cargo

如果您就知道上面列出的其中任何一中工具,那么很容理解它是什么。\
pipenv 恰好就是Python 的一个包管理工具。

为什么选 “pipenv”?

官方文档 Pipenv: 人类的Python开发工作流程 和 这个博客文章 为什么Python开发者应该使用Pipenv 会告诉我们为什么使用,以及如何去使用 pipenv。

以下是使用 pipenv 的两个主要原因:

  • 不需要分别使用 pip and virtualenv;
  • requirements.txt 有问题: 请参阅 一个更好的 Pip 工作流程™
    • 未指定版本->每次在开发/生产环境中使用不同的版本!
    • 指定版本-> --upgrade 不方便使用!

如果我们回顾一下Python包管理工具的历史,会发现有很多工具都不是太理想。

  • 包管理工具
    • Easy Install
    • pip
  • 许多的虚拟环境管理工具
    • virtualenv
    • venv
    • pyenv
    • pyenv-virtualenv
    • etc

最后, 我们一起来认识一下 pipenv 的强大。

配置 pipenv

查看 Python 版本 (should be 3.x)

$ python --version
Python 3.6.0

查看 pip 版本

$ pip --version
pip 18.1

按照 pipenv

brew install pipenv

查看 pipenv 版本

$ pipenv --version
pipenv, version 2018.11.26

看到 pipenv 版本信息,说明已经安装成功!

pipenv workflow

安装依赖项(pipenv会自动检测 requests.txt 文件并按照依赖项)

$ cd [YOUR PROJECT]
$ pipenv install

Pipfile 和 Pipfile.lock 应该已经被创建成功。

  • Pipfile: 所有已安装软件包的列表

(Pipfile 示例)

[[source]]
name = "pypi"
url = "https://pypi.org/simple"
verify_ssl = true

[dev-packages]

[packages]
jupyter = "*"
seaborn = "*"
numpy = "*"
pandas = "*"
plotly = "*"
scipy = "*"
six = "*"
sklearn = "*"
pyspark = "*"
flake8 = "*"
autopep8 = "*"
Flask = "*"

[requires]
python_version = "3.7"
  • Pipfile.lock: 使用版本维护适当的依赖项和子包

(Pipfile.lock 示例)

{
    "_meta": {
        "hash": {
            "sha256": "xxxxxxxxxxxxxxxxxxxxxxxx"
        },
        "pipfile-spec": 6,
        "requires": {
            "python_version": "3.7"
        },
        "sources": [
            {
                "name": "pypi",
                "url": "https://pypi.org/simple",
                "verify_ssl": true
            }
        ]
    },
    "default": {
        "appnope": {
            "hashes": [
                "sha256: xxxxxxxxxxxxxxxxxxxxxxxx",
                "sha256: xxxxxxxxxxxxxxxxxxxxxxxx"
            ],
            "markers": "sys_platform == 'darwin'",
            "version": "==0.1.0"
        },
        "attrs": {
            "hashes": [
                "sha256: xxxxxxxxxxxxxxxxxxxxxxxx",
                "sha256: xxxxxxxxxxxxxxxxxxxxxxxx"
            ],
            "version": "==19.1.0"
        },
        "autopep8": {
            "hashes": [
                "sha256: xxxxxxxxxxxxxxxxxxxxxxxx"
            ],
            "index": "pypi",
            "version": "==1.4.4"
...

现在,运行python脚本(使用时可以使用已安装的软件包 pipenv run)

$ pipenv run python [YOUR PYTHON MAIN SCRIPT]
Pipfile.lock not found, creating…
Locking [dev-packages] dependencies…
Locking [packages] dependencies…
✔ Success! 
Updated Pipfile.lock (980232)!
Installing dependencies from Pipfile.lock (980232)…
  ?   ▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉ 73/73 — 00:01:22
To activate this project's virtualenv, run pipenv shell.
Alternatively, run a command inside the virtualenv with pipenv run.

发表评论

0/200
0 点赞
0 评论
收藏
为你推荐 换一批