如何用 pipenv 克隆 Python 教程代码运行环境?

我们的 Python 教程代码已经能够免安装在线运行了。但若是你但愿在本地克隆运行环境,请参考本文的步骤说明。html

疑惑

这些日子,我用课余时间,忙着把本身知识星球的分享文章转移到语雀平台,以便于订阅用户阅读和得到即时推送。目前该分享空间已经初具规模。python

回过头来一看,专栏和微信公众号后台,积攒了很多用户的提问。git

例如这位用户问:github

为何我在binder上新建的文件再次打开后就丢失了?浏览器

问题来自于个人《如何用iPad运行Python代码?》一文。安全

我们用 mybinder ,是为了给读者们提供一个一致性的代码运行环境。bash

你能够免安装,运行样例代码。能够修改代码从新运行,甚至能够上传数据文件,作本身的分析。微信

我须要补充说明一个重要事项—— mybinder 为我们提供的 Python 运行环境资源,是共享的,并不是永久独占空间。网络

每一个同窗,打开相同的一个连接后,mybinder 都开启一个独立的环境,你们互不干扰。session

可是,Python 环境的运行,是须要后台的资源支持的。

你每打开一个 mybinder 的连接,后台都要给你提供对应的 CPU、内存、硬盘等一系列资源。

若是这些资源被大量用户长期占用,平台没法承受。新的用户也就没法再加入使用了。

mybinder 平台和用户的约定,是若是你超过十分钟“不活跃”(inactivity),系统就会关闭你的会话(session),以回收资源,服务更多有须要的用户。

你运行结束关闭浏览器,超过10分钟,再用该连接从新访问,所作的改动天然就都不见了。

也正因如此,我才在教程的末尾,为你提供了源代码的 github repo 地址。

你能够选择在本身的机器上,克隆教程 Python 运行环境。

哪些状况下,你会须要在本地克隆 Python 运行环境呢?

若是你的数据比较大,或者安全性要求较高,上传到云端不方便;

若是你怕由于网络稳定性的缘由,致使代码运行中途网络出现问题,前功尽弃;

若是你运行的深度学习模型,须要 GPU 或者大容量内存的支持……

遇到上述状况,没关系。

下面我给你介绍如何使用 pipenv ,方便地克隆教程指定的 Python 运行环境,在本地运行 Jupyter Notebook。

流程

我们以《如何用 Python 和 API 收集与分析网络数据?》这篇文章为例。

文章结尾部分,我给你提供了对应的 github repo 的代码地址t.cn/R3usEti)。

你也能够直接经过这个连接t.cn/R3usDi9),直接下载包含源代码与运行环境的压缩包。

解压以后,你会看到目录中包含如下配置相关文件:

  • environment.yml
  • postBuild
  • Pipfile

其中 environment.ymlpostBuild 是为 mybinder 使用的。本地克隆运行环境的时候,你能够忽略它们。

请注意其中的 Pipenv 文件。

咱们打开 Pipenv 文件,看看内容:

[[source]]
url = "https://pypi.org/simple"
verify_ssl = true
name = "pypi"

[packages]
ipykernel = "*"
plotnine = "*"
requests = "*"

[dev-packages]

[requires]
python_version = "3.6"

复制代码

其中 requires 区域,说明了本教程使用的环境,是 Python 3.6 版本。

packages 区域,告诉 pipenv ,须要给咱们准备的软件包都有哪些。

下面咱们看看如何用 pipenv 克隆运行环境。

你须要检查是否已经安装了 Anaconda 3。

若是你尚未安装,请参考我以前为你制做的这篇教程 《如何安装Python运行环境Anaconda?(视频教程)》把它安装好,而且学习如何在终端进入解压后的压缩包。

我把后续的详细操做步骤,录了一段视频,你能够直接点开这个连接t.cn/R1cWIWr),播放该视频。

若是你以前有安装经验,也能够根据下面的文字说明操做。

以后,执行如下语句:

pip install pipenv
复制代码

这会为咱们安装 pipenv 工具,以便处理 Pipfile。

第二步,执行:

pipenv install --skip-lock
复制代码

这个命令,可让 Python 根据咱们目前的 Pipenv 配置,自动构建环境,而且从网上把全部须要用到的依赖软件包,都弄下来,安装好。

第三步,执行:

pipenv run python -m ipykernel install --user --name=wangshuyi
复制代码

这条命令,帮你给 Jupyter Notebook ,安装一个核心组块,把你刚才安装的这些软件包信息,都放在这个组块里。

为了便于在系列教程中重复使用代码,我给这个组块命名为 wangshuyi。

对于通常的教程源代码,上述步骤就能够了。可是由于《如何用 Python 和 API 收集与分析网络数据?》这篇文章,涉及到绘图,并且里面出现中文显示。

咱们须要进行一些处理,以便让程序顺利运行,保证中文字符正常显示。

方法是执行下面这条语句:

pipenv run python handle_matplotlib_chinese.py
复制代码

最后一步,开启 Jupyter Notebook :

jupyter notebook
复制代码

这时候,你就能够看到熟悉的 Jupyter Notebook 界面了。

注意这个示例代码中,须要你输入本身的 AppCode,因此你须要把其中的“Your AppCode here”字样,替换为你本身的 AppCode值。不然下面的运行会报错。

替换以后,点击菜单栏中的“Cell”,选择“Run All”,看可否正常运行所有代码,而且显示分析结果图形。

若是一切正常,意味着你的 Python 运行环境克隆工做顺利完成。

祝贺你!

背景

有读者留言询问,为何用了两套不一样的虚拟软件包管理工具。

由于很遗憾,本文写做时, mybinder 还不支持 Pipfile 配置文件。

其实,咱们这里用到的 Pipfile ,不是 pipenv 这个软件专用的配置文件格式。

它是将来 Python 软件包管理工具 pip 的官方指定配置文件格式。

在将来,若是你用 pip 安装软件,就要跟 Pipfile 打交道。

不过,Python 开源社区的不少举动,进展都很缓慢。

例如 Python 3,已经出来这么久了, Python 2 尚未退休呢。

pip 这种底层的包管理方式,哪是一两天就能发生根本改变的?

pipenv 出现,是由于人们不想等了。

如今,就是如今,咱们要用最符合人性的 Python 软件包管理工具。

使用 pipenv,好处有不少。

仅举一例,用 pipenv ,你能够用一条命令,查看当前项目软件包之间的依赖关系。

感受怎么样?

若是你对 pipenv 感兴趣,想了解它的特性、演进过程,请点击这个连接t.cn/R1cYQSU),查看 PyCon 2018 大会上 Kenneth Reitz 的讲解。

Kenneth Reitz 是谁?

若是你读过个人《如何用 Python 和 API 收集与分析网络数据?》一文,你已经用过他的做品了。

对,“给人用的” (for humans) HTTP 工具,requests,就是他写的。

讨论

你更喜欢在 mybinder 直接在线运行 Python 教程代码,仍是喜欢在本地克隆一个完整的运行环境呢?为何?欢迎留言,把你的经验和思考分享给你们,咱们一块儿交流讨论。

喜欢请点赞。还能够微信关注和置顶个人公众号“玉树芝兰”(nkwangshuyi)

若是你对数据科学感兴趣,不妨阅读个人系列教程索引贴《如何高效入门数据科学?》,里面还有更多的有趣问题及解法。

相关文章
相关标签/搜索