怎么使用pipenv管理你的python项目


Posted in Python onMarch 12, 2018

在thoughtbot,我们用Ruby和Rails工作,但通常我们总是尝试使用最合适的语言或者框架来解决问题。我最近一直在探索机器学习技术,所以Python使用地更多。

Ruby项目和Python项目处理之间的一个很大的区别就是管理依赖关系方式的不同。目前在Python语言中没有类似于Bundler或Gemfiles的东西,所以通常Python开发人员将使用Virtualenv创建一个虚拟环境,再创建一个依赖包列表requirements.txt,然后他们可以使用 Pip进行安装。

这种方法一般都会工作正常,但有时它会表现出一些怪异行为,因此你必须手动安装或删除某些特定版本的包,并记得定期更新requirements.txt文件,以保持项目环境的一致。特别是当你想要在你的虚拟环境中安装Python包,但它不一定与项目本身相关联。 此外,一些项目有时会保留requirements.txt文件的两个版本——一个用于开发环境,一个用于生产环境,这可能会导致更多的复杂性。

幸运的是,Kenneth Reitz的最新工具Pipenv可以用于简化Python项目中依赖项的管理。 它汇集了Pip,Pipfile和Virtualenv的功能,是一个强大的命令行工具。

入门

首先使用pip安装Pipenv及其依赖项,

pip install pipenv

然后将目录更改为包含你的Python项目的文件夹,并启动Pipenv,

cd my_project
pipenv install

这将在项目目录中创建两个新文件Pipfile和Pipfile.lock,如果项目不存在,则为项目创建一个新的虚拟环境。 如果你添加?two或?three标志到上面的最后一个命令,它分别使用Python 2或3来初始化你的项目。 否则将使用默认版本的Python。

管理Python依赖关系

Pipfile包含关于项目的依赖包的信息,并取代通常在Python项目中使用的requirements.txt文件。 如果你在具有requirements.txt文件的项目中启动了Pipenv,则在把它从项目中删除之前,应该使用Pipenv安装该文件中列出的所有依赖包。

要为你的项目安装Python包,请使用install关键字。 例如,

pipenv install beautifulsoup4

将安装当前版本的Beautiful Soup包。 可以使用uninstall关键字以类似的方式删除包,

pipenv uninstall beautifulsoup4

可以通过更新Pipfile.lock来冻结软件包名称及其版本,以及其依赖关系的列表。 这可以使用lock关键字完成的,

pipenv lock

如果另一个用户克隆存储库,可以添加Pipfiles到你的Git存储库,这样他们只需要在他们的系统中安装Pipenv,然后键入,

pipenv install

Pipenv会自动找到Pipfiles,创建一个新的虚拟环境并安装必要的软件包。

管理你的开发环境

通常有一些Python包只在你的开发环境中需要,而不是在你的生产环境中,例如单元测试包。 Pipenv将使用?dev标志保持两个环境分开。

pipenv install --dev nose2

nose2,但也将其关联为只在开发环境中需要的软件包。 这很有用,因为现在,如果你要在你的生产环境中安装你的项目,

pipenv install

默认情况下不会安装nose2包。 但是,如果另一个开发人员将你的项目克隆到自己的开发环境中,他们可以使用?dev标志,

pipenv install ?dev

并安装所有依赖项,包括开发包。

运行你的代码

为了激活与你的Python项目相关联的虚拟环境,你可以使用简单地shell命令,比如

pipenv run which python

将在你的虚拟环境中运行which python命令,并显示与你的虚拟环境相关联的python可执行文件所在的路径。 这是在虚拟环境中运行你自己的Python代码的一个简单方法,

pipenv run python my_project.py

如果你不想每次运行Python时都输入这么多,你可以在shell中设置一个别名,例如,

alias prp="pipenv run python"

保持简单

我希望这篇文章已经告诉你如何管理你的Python项目与Pipenv。 它出现不到一个月,所以我很有兴趣,看看它随着时间的推移如何发展。我当然不希望它变得完全像Ruby的Bundler,但我肯定会支持它,以简化Python项目中依赖的管理。 我希望你也这样!

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
一个计算身份证号码校验位的Python小程序
Aug 15 Python
python求pi的方法
Oct 08 Python
python实现简易版计算器
Jun 22 Python
python3 图片referer防盗链的实现方法
Mar 12 Python
Python使用win32com模块实现数据库表结构自动生成word表格的方法
Jul 17 Python
pyinstaller 3.6版本通过pip安装失败的解决办法(推荐)
Jan 18 Python
Python模块 _winreg操作注册表
Feb 05 Python
python可以用哪些数据库
Jun 22 Python
python用tkinter实现一个简易能进行随机点名的界面
Sep 27 Python
Python爬虫之Selenium多窗口切换的实现
Dec 04 Python
python反编译教程之2048小游戏实例
Mar 03 Python
python3判断IP地址的方法
Mar 04 Python
python实现图书管理系统
Mar 12 #Python
python实现快速排序的示例(二分法思想)
Mar 12 #Python
Python中的pack和unpack的使用
Mar 12 #Python
python文本数据相似度的度量
Mar 12 #Python
python使用jieba实现中文分词去停用词方法示例
Mar 11 #Python
python实现拓扑排序的基本教程
Mar 11 #Python
Python实现图片尺寸缩放脚本
Mar 10 #Python
You might like
一个简洁的多级别论坛
2006/10/09 PHP
php 过滤英文标点符号及过滤中文标点符号代码
2014/06/12 PHP
实例介绍PHP删除数组中的重复元素
2019/03/03 PHP
用JavaScript实现UrlEncode和UrlDecode的脚本代码
2008/07/23 Javascript
js鼠标及对象坐标控制属性详细解析
2013/12/14 Javascript
Javascript实现简单的富文本编辑器附演示
2014/06/16 Javascript
JavaScript中的Math.LN2属性用法详解
2015/06/12 Javascript
Bootstrap前端开发案例二
2016/06/17 Javascript
深入理解requestAnimationFrame的动画循环
2016/09/20 Javascript
使用JavaScript为一张图片设置备选路径的方法
2017/01/04 Javascript
javascript 秒表计时器实现代码
2017/03/09 Javascript
jQuery实现的背景颜色渐变动画效果示例
2017/03/24 jQuery
vue.js-div滚动条隐藏但有滚动效果的实现方法
2018/03/03 Javascript
iview同时验证多个表单问题总结
2018/09/29 Javascript
微信小程序用户位置权限的获取方法(拒绝后提醒)
2018/11/15 Javascript
[01:35]2018年度CS GO最佳战队-完美盛典
2018/12/17 DOTA
[01:09:23]KG vs TNC 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/16 DOTA
[08:54]DOTA2-DPC中国联赛 正赛 Aster vs LBZS 选手采访
2021/03/11 DOTA
Python数据类型详解(三)元祖:tuple
2016/05/08 Python
python使用pil进行图像处理(等比例压缩、裁剪)实例代码
2017/12/11 Python
python中的闭包函数
2018/02/09 Python
Pycharm 文件更改目录后,执行路径未更新的解决方法
2019/07/19 Python
ansible动态Inventory主机清单配置遇到的坑
2020/01/19 Python
关于Python解包知识点总结
2020/05/05 Python
Python把图片转化为pdf代码实例
2020/07/28 Python
Python 整行读取文本方法并去掉readlines换行\n操作
2020/09/03 Python
解决pycharm修改代码后第一次运行不生效的问题
2021/02/06 Python
CSS3中31种选择器使用方法教程
2013/12/05 HTML / CSS
Proenza Schouler官方网站:纽约女装和配饰品牌
2019/01/03 全球购物
党员公开承诺践诺书
2014/03/25 职场文书
诉前财产保全担保书
2014/05/20 职场文书
基层党员群众路线整改措施及努力方向
2014/10/28 职场文书
四年级数学上册教学计划
2015/01/20 职场文书
入党函调证明材料
2015/06/19 职场文书
干货!开幕词的写作方法
2019/04/02 职场文书
关于pytest结合csv模块实现csv格式的数据驱动问题
2022/05/30 Python