怎么使用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找出那些被“标记”的照片
Apr 20 Python
python版简单工厂模式
Oct 16 Python
python 通过xml获取测试节点和属性的实例
Mar 31 Python
Django项目中model的数据处理以及页面交互方法
May 30 Python
Python线程池模块ThreadPoolExecutor用法分析
Dec 28 Python
Python多线程爬取豆瓣影评API接口
Oct 22 Python
python绘制无向图度分布曲线示例
Nov 22 Python
基于python 凸包问题的解决
Apr 16 Python
tensorflow使用freeze_graph.py将ckpt转为pb文件的方法
Apr 22 Python
windows10 pycharm下安装pyltp库和加载模型实现语义角色标注的示例代码
May 07 Python
PyTorch中clone()、detach()及相关扩展详解
Dec 09 Python
对Pytorch 中的contiguous理解说明
Mar 03 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
PHP中的cookie不用刷新就生效的方法
2012/02/04 PHP
写一段简单的PHP建立文件夹代码
2015/01/06 PHP
在WordPress中实现发送http请求的相关函数解析
2015/12/29 PHP
用js统计用户下载网页所需时间的脚本
2008/10/15 Javascript
javascript验证身份证完全方法具体实现
2013/11/18 Javascript
jquery使用jquery.zclip插件复制对象的实例教程
2013/12/04 Javascript
详解vue过滤器在v2.0版本用法
2017/06/01 Javascript
JavaScript实现简单动态进度条效果
2018/04/06 Javascript
浅谈Node.js 中间件模式
2018/06/12 Javascript
vue iview多张图片大图预览、缩放翻转
2019/07/13 Javascript
Jquery滑动门/tab切换实现方法完整示例
2020/06/05 jQuery
JavaScript实现通讯录功能
2020/12/27 Javascript
基于vue的video播放器的实现示例
2021/02/19 Vue.js
[05:02]2014DOTA2 TI中国区预选赛精彩TOPPLAY第三弹
2014/06/25 DOTA
python使用urllib2提交http post请求的方法
2015/05/26 Python
python命令行解析之parse_known_args()函数和parse_args()使用区别介绍
2018/01/24 Python
Python Requests模拟登录实现图书馆座位自动预约
2018/04/27 Python
Python爬虫框架Scrapy常用命令总结
2018/07/26 Python
在Python中使用defaultdict初始化字典以及应用方法
2018/10/31 Python
python对列进行平移变换的方法(shift)
2019/01/10 Python
Python及Pycharm安装方法图文教程
2019/08/05 Python
django 多对多表的创建和插入代码实现
2019/09/09 Python
python GUI库图形界面开发之PyQt5窗口背景与不规则窗口实例
2020/02/25 Python
在Keras中利用np.random.shuffle()打乱数据集实例
2020/06/15 Python
分享一枚pycharm激活码适用所有pycharm版本我的pycharm2020.2.3激活成功
2020/11/20 Python
HTML5自定义元素播放焦点图动画的实现
2019/09/25 HTML / CSS
购买中国最好的电子产品:Geekbuying
2018/03/13 全球购物
司机的工作范围及职责
2013/11/13 职场文书
物业公司采购员岗位职责
2013/12/31 职场文书
十佳护士先进事迹
2014/05/08 职场文书
抗洪救灾先进集体事迹材料
2014/05/26 职场文书
高职教师先进事迹材料
2014/08/24 职场文书
2014年教师思想工作总结
2014/12/03 职场文书
写作技巧:怎样写好一份优秀工作总结?
2019/08/14 职场文书
2019年暑期法院实习报告
2019/12/18 职场文书
Python如何导出导入所有依赖包详解
2021/06/08 Python