使用pipenv管理你的python项目

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

原文连接:https://robots.thoughtbot.com/how-to-manage-your-python-projects-with-pipenv

python

  在thoughtbot,咱们用Ruby和Rails工做,但一般咱们老是尝试使用最合适的语言或者框架来解决问题。我最近一直在探索机器学习技术,因此Python使用地更多。
  Ruby项目和Python项目处理之间的一个很大的区别就是管理依赖关系方式的不一样。目前在Python语言中没有相似于Bundler或Gemfiles的东西,因此一般Python开发人员将使用Virtualenv建立一个虚拟环境,再建立一个依赖包列表requirements.txt,而后他们可使用 Pip进行安装。shell

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

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

入门

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

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项目中依赖的管理。 我但愿你也这样!

相关文章
相关标签/搜索