专栏首页北京马哥教育Python 官方推荐的一款打包工具

Python 官方推荐的一款打包工具

原文链接:https://robots.thoughtbot.com/how-to-manage-your-python-projects-with-pipenv 翻译者:Jiong

在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_projectpipenv 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项目中依赖的管理。 我希望你也这样!


本文分享自微信公众号 - 马哥Linux运维(magedu-Linux)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2017-09-30

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 你都知道哪些好用的python工具?

    工欲善其事必先利其器,一个好的工具能让起到事半功倍的效果,Python社区提供了足够多的优秀工具来帮助开发者更方便的实现某些想法,下面这几个工具给我的工作也带来...

    小小科
  • 各种 Python 实现的简单介绍与比较

    小小科
  • Python Web不知道怎么学?看这篇就够了!

    Python的用处太多,前端、后端、数据、ML\AI、自动化等等等等。很多小白不知道学习方向导致学的东西太杂,技能范围很广但是没有高度,自己玩可以工作就完蛋。这...

    小小科
  • Python 官方推荐的一款打包工具

    https://blog.csdn.net/dream_allday/article/details/60467131

    昱良
  • Python 官方推荐的一款打包工具

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

    IT派
  • 用 Python 挪车、管理农场,这届 PyCon 有点香

    内容提要:一年一度的 PyCon 如期而至,虽然今年的 PyCon US 2020 转战线上,但内容并不逊于往年,依然干货满满。超神经第一时间将内容整理供大家观...

    HyperAI超神经
  • 7个实战案例、24个学习视频、12G干货资料...今天带你免费入门Python数据分析!

    你花了大半天整合了一张数据表,却因为其他部门的错误,导致表格结构全错了!于是你又要吭哧吭哧重新来过……

    华章科技
  • Python 3 学习笔记:环境搭建

    1989 由荷兰人 Guido van Rossum 发明 1991 第一个公开发行版问世 1994 Python 1.0 发布 2000 Python 2.0...

    py3study
  • Python+sklearn使用三种交叉验证方法评估模型泛化能力

    本文使用的数据集格式请参考:使用Python预处理机器学习需要的手写体数字图像文件数据集

    Python小屋屋主
  • 会Python和不会Python的区别

    Python官方在今年2月做了一份报告,从官方的角度说明了Python的使用状况和受欢迎程度:

    叫我龙总

扫码关注云+社区

领取腾讯云代金券