什么是 『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.
© 著作权归作者所有
发表评论