月度归档:2018年06月

为Git仓库里的.idea文件夹正名

在网络上,我曾多次看到人们对于Git仓库中的.idea文件夹的偏见。最近的一次是在某个博客中技术专家对于志愿者提交的项目的点评,其中在“项目规范”中有一条加分项为“没有 .idea 这种不该上传的文件夹”;另一次是在知乎评价某程序员的问题下某个回答的评论中,有人发现该程序员的GitHub仓库里有.idea目录,就居高临下的将其作为理由讽刺该程序员,潜台词即“项目里有.idea = 水平低下”。想当然的,我没看到的类似情况会更多,而这些观点又会影响很多不熟悉具体事实的人,我想我应该尽一份力来改变这个错误的观点继续蔓延。

我加入了Pallets Projects开发团队

今天早晨起来检查收件箱,收到了David Lord(Flask核心维护者)的邮件,他同意了我的申请——前段时间邀请他为我的新书《Flask Web开发实战》写推荐语,同时申请加入Pallets Projects开发团队(Pallets Team)。

Pallets Projects是什么?

简单来说,Pallets Projects就是“Flask项目集合”,为了更好的管理Flask相关项目而由Pocoo分化而来。它同时也是一个GitHub Organization,包括了所有Flask相关的项目,比如Flask、Werkzeug、Jinja、Click等等。

一本更好的Flask书——《Flask Web开发实战》

提示:本文的最新版本以及这本书的最新动态请访问知乎专栏Hello, Flask!上的同名文章查看,博客上的文章会稍晚一些更新。另外,你也可以关注我的Twitter(@greylihui)新浪微博了解这本书的最新动态。       写作大事记(预计8月底上市):
  • 2017/3/1 开始写作
  • 2017/12/7 初稿完成
  • 2018/1/18 二稿完成
  • 2018/3/26 三稿完成
  • 2018/4/29 四稿完成
  • 2018/5/16 五稿完成
  • 2018/5/22 定稿(六稿)
  • 2018/6/5 确定最终修改,写作正式完结
  • 2018/6/20 完成封面设计初稿
  • 预计8月底上市

关于我

我是李辉,一个Python开发者,Flask开发团队(Pallets Team)的成员(刚刚加入……)。我在GitHub上维护了几个Flask扩展项目(刚刚起步,欢迎贡献代码),也尝试为多个Flask相关项目贡献代码和处理Issue;除了知乎,我偶尔会在Stack Overflow上回答一些Flask相关的问题。如果你想了解我的项目或书的最新动态,可以关注我的Twitter新浪微博账号。

为什么说这是一本更好的Flask书

书写完了

历时一年零三个月,Flask书的写作终于结束,目前已基本进入正式排版阶段,预计八月底可以上市。

这本书的写作时间线大致如下:

  • 2017/3/1 开始写作
  • 2017/12/7 初稿完成
  • 2018/1/18 二稿完成
  • 2018/3/26 三稿完成
  • 2018/4/29 四稿完成
  • 2018/5/16 五稿完成
  • 2018/5/22 定稿(六稿)
  • 2018/6/5 确定最终修改
  • 进入出版流程,开始排版

一本书的写作给我自己带来了很多变化,虽然有时感觉非常疲惫,但算得上是一个奇妙的体验。有时间会写一篇文章记录一下这一年的写作经历。

Pipenv:新一代Python项目依赖管理工具

 

什么是Pipenv

Pipenv是Kenneth Reitz在2017年1月发布的Python依赖管理工具,现在由PyPA维护。你可以把它看做是pip和virtualenv的组合体,而它基于的Pipfile则用来替代旧的依赖记录方式(requirements.txt)。 在这篇文章里,我将会以旧的依赖管理工作流程作为对比来介绍Pipenv的基本用法,更详细的用法可以参考Pipenv文档,或是Kenneth Reitz在PyCon 2018的演讲《Pipenv: The Future of Python Dependency Management》 顺便说一句,我的还没想好名字的Flask书中所有示例程序都使用了Pipenv进行依赖管理。
提示 如果你对virtualenv的用法以及虚拟环境的概念不熟悉的话,可以通过专栏的旧文《Flask出发之旅》进行简单的认识。

为什么使用Pipenv

Pipenv会自动帮你管理虚拟环境和依赖文件,并且提供了一系列命令和选项来帮助你实现各种依赖和环境管理相关的操作。简而言之,它更方便、完善和安全。你可以通过Pipenv文档开头的介绍来了解它的详细特性。Pipenv的slogan是“Python Dev Workflow for Humans”,作为人类,当然应该尝试一下……

如何使用Pipenv

假设我们要编写一个博客程序,项目的依赖是Flask和Flask-WTF。顺便说一句,可以使用下面的命令安装Pipenv: 下面我会通过不同操作来给出所需命令的对比,OLD(旧)表示使用pip和virtualenv,NEW(新)表示使用Pipenv。  

创建虚拟环境

  • OLD
提示 这里的venv是虚拟环境目录的名称,你可以自由更改,这会在你的项目根目录创建一个venv文件夹,其中包含独立的Python解释器环境。
  • NEW
Pipenv会自动为你创建虚拟环境,自动生成一个随机的虚拟环境目录名。  

激活虚拟环境

  • OLD
在Linux或macOS系统中: Windows:
  • NEW
此外,Pipenv还提供了一个pipenv run命令,在该命令后附加的参数会直接作为命令在虚拟环境中执行,这允许你不必显式的激活虚拟环境即可在虚拟环境中执行命令。比如,pipenv run python会启动虚拟环境中的Python解释器。  

安装依赖到虚拟环境

  • OLD
  • NEW
使用Pipenv,不管你是否激活了虚拟环境,都可以通过pipenv install命令安装: 事实上,对一个新项目来说,你不必手动使用pipenv install来创建虚拟环境。当使用pipenv install xxx直接安装依赖包时,如果当前目录不包含虚拟环境,Pipenv会自动创建一个。  

记录依赖