本文概述
- Python:核心部分
- 通过pip管理项目依赖项
- 虚拟环境:隔离你的项目设置
- 项目脚手架:使用Cookiecutter很容易!
- 将它们放在一起:项目开发生命周期
文章图片
对于开发人员而言, 正确配置其工作站可以简化开发体验。其中包括最佳工具的安装和配置, 以及设置所有使开发人员在创建软件的过程中发挥最大作用的设施。数据科学家也不例外, 因此正确的设置对于创建独特的软件(从可视化工具到提取过程)至关重要。在本教程中, 将说明用于数据科学的计算机设置的基础, 但是对于使用Python语言开发软件感兴趣的任何人, 本指南也将很有用。让我们继续吧!
范围
Python可用于多种操作系统。本教程将展示一些在Linux Ubuntu操作系统上执行的代码片段, 但是它们广泛应用于其他基于UNIX的系统和MAC OS。对于MS Windows系统, 每当适用时也会有一些细微的差异。
Python:核心部分 tl; dr使用来自官方网站的Python3实现
将Python解释器视为基于该语言的应用程序开发的核心部分似乎是一个显而易见的问题。但是在这一点上, 寻找最佳的Python解释器时可能会陷入困境。此外, 你可能已经阅读了两种不同的语言版本, 因此选择正确的版本和解释器是第一个重要的决定。
Python, Anaconda, Jython, WinPython, IronPython … 单个笼子里的蛇太多
由于该语言的流行, 因此有许多语言解释器的实现。其中一些很容易安装在你的计算机上, 而另一些则处于早期开发阶段, 因此仅建议其开发人员或勇敢的程序员安装。官方Python Wiki列出了一些可用的解释器, 并指出了其与其他实现相比的特定功能。正如我们将在本教程中看到的那样, 官方网站上的Python发行版包含了开始开发Python程序所需的一切, 同时又不缺少其他实现可能提供的任何功能。
Python2还是Python3?你应该使用哪个版本?
即使Python 3是十年前发布的, 从以前的Python 2到最新版本的过渡也不是小菜一碟。如此低的采用率的主要原因之一是语法上的差异, 这使得现有库无法用于最新版本。正如你在开发Python软件时可能会注意到的那样, 用于各种目的的库的可用性是该语言的主要优势之一。在此期间, 创建了一组工具和库, 例如2to3或6, 以缩小与现有软件的差距, 从而简化了向最新版本的迁移。在编写本教程时, 绝大多数库都可用于Python 3风格的软件, 因此, 此时决定使用哪个版本非常简单:Python3。此外, 到2020年, Python 2生命周期将来到它的结束。甚至还有人计划在PyCon 2020活动上庆祝” 庆祝生命” 派对, 所以不要犹豫地加入他们的行列, 感谢Python2为你和你的软件所做的一切!
在计算机上安装Python
Python解释器可广泛用于大多数操作系统, 甚至某些简化其安装的提供包。对于Ubuntu, 默认情况下甚至在桌面环境中同时包含Python2和Python3。只需考虑更改仍适用于Python版本2而不是版本3的python别名, 或在?/ .bashrc文件中定义一个别名, 以防你发现它有用。如上所述, 预计在接下来的几年中将仅安装一个Python版本。此时, 我的建议是安装最新版本的Python。如果你的计算机上已经安装了Python3, 请检查其版本是否高于3.5。如果你安装的是旧版本, 建议你升级它并享受该语言的最新功能。
$ python --versionPython 3.5.2
对于Windows系统所有者来说, 安装Python解释器也非常简单。官方下载页面提供了一个安装程序, 只需单击几下即可帮助你设置解释器。
通过pip管理项目依赖项
文章图片
对于基础开发, 安装Python解释器是开始编码所需的一切。解释器附带了Python软件包, 以及一些旨在简化应用程序管理的功能。这些工具之一称为pip, 其目的是帮助你安装存储在PyPI(Python软件包索引)或其他公共或私有存储库中的第三方库。
我们的第一个Python项目:Jupyter Notebooks
让我们考虑我们的第一个数据科学项目:一个Jupyter笔记本, 它将整理一些数据并提供一些令人惊叹的可视化效果。使用笔记本电脑所需的第一个库将是Jupyter。在计算机上安装Jupyter非常简单, 如下所示:
$ pip install --user jupyter
请注意, – user选项将仅为执行该库的用户安装该库。可以通过删除此选项来完成系统范围的安装, 但是可能需要特权用户才能完成安装。除了安装外, pip命令还允许你下载库, 查询当前配置, 升级和卸载库, 以防万一不再需要它。下表列出了一些对管理应用程序需求有用的命令:
命令 | 描述 |
---|---|
pip install < 软件包> | 安装套件 |
pip install – user < 软件包> | 为单个用户安装软件包 |
pip install – upgrade < 软件包> | 更新包 |
pip卸载< package> | 卸载软件包 |
pip下载< package> | 下载包 |
点冻结 | 列出已安装的软件包 |
点安装-r requirements.txt | 安装给定的requirements.txt文件中列出的软件包 |
点显示< package> | 显示有关包装的信息 |
虚拟环境:隔离你的项目设置
文章图片
想象一下, 当你在处理笔记本项目时, 你会发现一个新的, 闪亮的库, 该库为你提供了一些想要在包含在笔记本项目配置中之前要尝试的功能。该库需要安装不同版本的jupyter笔记本。此时, 你有以下选择:
- 安装没有依赖关系的新软件包。除非你对其代码进行一些更改, 否则库可能会发生故障。
- 安装具有依赖关系的新软件包。你当前的项目将受到影响, 迫使你升级项目配置并进行一些更改以使其按预期工作。
$ pip install -U venv
对于使用Python2的用户(除非你更喜欢升级), 该库称为virtualenv, 可以通过相同的方式安装。
$ pip install -U virtualenv
那些使用Ubuntu的开发人员可能会发现virtualenv作为系统软件包, 可以使用apt-get进行安装, 如下所示:
$ sudo apt-get install python3-venv
创建新的虚拟环境很容易。在命令行中, 键入以下命令以在目录new_venv内创建一个新的虚拟环境。
$ python -m venv new_venv
作为建议, 尝试从工作区目录中键入上面的命令。这样, 你将拥有一个包含源代码的独立目录, 以及将存储应用程序所需的库的虚拟环境。创建虚拟环境后, 可以通过将激活脚本加载到new_venv / bin / activate中来开始在隔离模式下工作。
source new_venv/bin/activate(new_venv) $ ...
Windows用户应执行安装在Scripts目录中的激活脚本。
new_venv/Scripts/activate(new_venv) $ ...
请注意, 一旦加载了虚拟环境, 提示外壳将更改, 在括号之间写入虚拟环境名称。一目了然, 虚拟环境包含以下元素:
- python解释器:与用于创建虚拟环境的解释器相同。请注意, 除非你更改了python别名, 否则如果你安装了多个Python3, 则必须显式使用python3甚至python3.6。
- 点子包管理器。软件包管理器将在lib / pythonX.Y / site / packages目录中安装所有库。 python解释器将使用此目录来解决依赖关系。
- 激活/停用脚本。它有助于加载项目环境, 并在不需要时返回默认配置。成功加载虚拟环境后, 可以按以下方式安装任何库:
$ pip install requests
该命令将在虚拟环境中安装请求库, 并且可以由虚拟环境目录的bin文件夹中存储的python解释器加载该命令库。请注意, 安装该库不需要特权用户访问。你可以使用pip show命令(pip show请求)检查安装, 该命令将提供有关已安装库的详细信息。最后, 一旦停止处理项目, 就可以通过执行deactivate命令来停用虚拟环境。
(new_venv) $ deactivate$
如此简单, 如此强大, 如此有用。这是对虚拟环境有帮助的! :D
提示:可以通过sys.prefix变量检查软件包的安装位置。尝试在已加载的环境以及默认配置下执行它。
>
>
>
import sys>
>
>
print(sys.prefix)
项目脚手架:使用Cookiecutter很容易!
文章图片
你和我们大多数人开始使用简单的脚本(可能是Hello World)开发Python应用程序。因此, 考虑相似之处以及所解释的概念, 会将我们带入以下工作空间结构:
- 包含我们的工作空间的目录, 包含
- 虚拟环境目录, 以及
- Hello World应用程序的简单脚本。
$ tree -L 1.├── requirements.txt--->
Project dependencies file├── src--->
Source code goes here├── tests--->
Test code goes here└── venv--->
Virtual environment files
我们之前在pip部分中已经讨论了requirements.txt文件。该文件将包含可以使用pip Frozen命令存储的项目依赖项。 src和测试目录将包含业务逻辑和关联的测试。 venv目录(通常这样命名)存储了虚拟环境配置。
轻松创建项目支架:Cookiecutter
即使之前介绍的方法可能就足够了, 但是只要你的开发技能不断提高, 你就可能需要开发包含更多简化开发过程的工具的演化脚手架。手动创建Python脚手架可能很乏味。更好的选择是维护参考项目的副本, 并在复制参考内容以建立新项目后替换其中的某些内容。即使可行, 此选项也容易出错, 并且如果你忘记正确设置一些资源, 可能会导致出现不一致的情况。使用cookiecutter工具可以轻松设置新项目。该工具将项目模板作为输入, 并在使用提示给用户的一组输入参数替换文件名及其内容之后, 存储模板的副本。该工具以python语言实现, 可以作为pip库安装。
$ pip install -U cookiecutter
请记住, -U选项会将工具安装在你的用户空间中。你可以跳过它, 但是需要以root用户(或sudoer用户)身份安装它。还可以为Ubuntu用户找到此工具, 可以将其作为可使用apt-get安装的软件包。
$ sudo apt-get install cookiecutter
cookiecutter工具最简单的执行方法如下:
$ cookiecutter <
TEMPLATE_LOCATION>
输入模板的位置可以存储在本地, 也可以指定为GIT URL。对于对维护和发展其项目工作区模板感兴趣的开发人员和组织, 后一种方法很方便。
要了解cookiecutter的工作方式, 请看一个示例cookiecutter项目。此和任何其他Cookicutter项目的核心文件都名为cookiecutter.json, 其中包含用户必须指定的一组值, 以创建项目工作区。该文件以JSON格式编写, 并且包含一个包含键-值对的字典, 其中的值表示默认值, 以防用户跳过任何输入。
{"full_name": "Steven Loria", "email": "sloria1@gmail.com", "github_username": "sloria", "project_name": "My Flask App", "app_name": "myflaskapp", "project_short_description": "A flasky app.", "use_pipenv": ["no", "yes"]}
从输入值中, cookiecutter将从模板中替换包含双括号{{… }}的文件和目录名称。
对于那些对创建自己的原型感兴趣的人, 一个好主意是开始从事cookiecutter项目, 并将其中任何对开发应用程序有价值的内容放入其中。对于那些迫不及待要开始新项目的人, 有很多cookiecutter项目可用, 可以实例化。寻找适合你需求的切饼机?尝试使用此cookiecutter搜索引擎进行搜索!更好的消息是, 此工具不仅针对Python项目脚手架, 而且对其他任何项目类型都是通用的!
将它们放在一起:项目开发生命周期 在介绍了软件包管理, 虚拟环境和项目框架的概念之后, 我们可以将它们放在一起, 并按照本教程中的说明通过设置计算机来说明工作方式:
- 使用Python3作为你的编码解释器。如果你开始使用Python 3.6, 那就更好了。
- 创建一个新项目, 将在其中存储你的Python模块和依赖项。
- 通过使用cookiecutter和你选择的参考模板, 可以轻松地创建一个新项目。
- 在应用程序文件夹中创建一个新的虚拟环境, 并在准备编写应用程序代码后将其激活。
- 编写你一生中最好的应用程序, 并在需要时使用第三方库。
- 不要忘记通过使用pip Frozen命令在requirements.txt文件中声明依赖项。
- [可选]将你的项目上传到CVS系统(例如Git)。但是不要上传虚拟环境内容。你可以根据需要在任何时候重新创建它, 如下所述。
- 将代码和依赖项文件复制到工作空间文件夹中(Git用户可以克隆存储库)。
- 在应用程序文件夹中创建一个新的虚拟环境, 并激活它以安装应用程序依赖项。
- 使用pip install -r requirements.txt安装依赖项。
- 对项目进行改进或修复。不要忘记使用pip冻结在需求文件中指定新的依赖项。
快乐的Python编码!
【Python安装程序(权威指南)】如果你想了解有关Python的更多信息, 请参加srcmini的免费的Python数据科学入门课程。
推荐阅读
- Tidyverse足球得分分析
- 手机QQ空间直播怎样放音乐?手机QQ空间直播放音乐图文详细教程
- 微信整人图片的自制办法_微信
- 手机QQ空间直播怎样发弹幕?手机QQ空间直播发弹幕办法
- 微信添加超过500KB、图片太大的动态GIF表情的办法_微信
- 微信gif图片太大无法添加怎样办?_微信
- 不想起床微信表情包大全_微信
- 不想上班时必看的微信表情包_微信
- 国庆节发啥口令会下微信表情雨?_微信