神级操作!优化​Python开发环境的几个技巧

优化Python开发环境的几个神技巧 终于完成了使用poetry创建项目的所有准备工作,我把这个项目命名为dsexample,为了展示如何使用poetry,我添加了一个特定版本的pandas库,以及所有额外需求的fastapi框架。每次添加新的钩子函数时,建议一开始在所有文件中手动运行pre-commit,因为它只能作用于上次提交之后更改过的文件。相反,black和mypy在CI/CD服务器上运行,因此,将它们添加到项目的dev依赖项是有意义的。对于很多人而言,Python提供的大量免费函数库、高可读性的程序和新引入的类型注释让很多爱不释手。 阅读详情

640

今天看到一篇 Django 联合创始人(cocreator,姑且这么叫)的一篇文章,里面推荐了自己的 Python 开发环境配置,用到了 pyenv、pipx、poetry。还没准备翻成中文,就发现在本文里都有介绍,因此将本文推荐给大家。

(本文素材来源于网络)

用Python编代码体验极佳,并且随着新版本的发布越来越好!

对于很多人而言,Python提供的大量免费函数库、高可读性的程序和新引入的类型注释让很多爱不释手。

然而,数据科学家特别容易使自己的Jupyter notebook变得庞大而杂乱,或者写出一些难以理解的python文件。

此外,当一个项目依赖于同一函数库的不同版本时,常常发生版本冲突。

修复以上问题消耗大量时间,还经常导致其他项目出现问题。必须找到避免这类问题的解决方式,为编写代码提供便利。

 

在本篇文章中我将详细介绍常用的工具与技巧,希望能给大家提供帮助。 

1

Python开发环境

解释器:

从使用Python最重要的解释器开始。你可以只下载最喜欢的Python版本,然后把所有内容放在里面。

但如果你的程序需要不同版本的Python,或依赖于同一第三方模块的不同版本,并需要在几个程序之间无缝切换时该怎么办?

 

Pyenv可以解决上述问题。

 

Pyenv共包含三个工具,下面将介绍其中两个:pyenv(用于安装python)和pyenv-virtualenv(用于配置全局工具)。

 

可通过下方网址安装pyenv:

curl https://pyenv.run | bash

 

安装后,向.bashrc(或.zshrc)文件中添加下方代码,使得pyenv可用于设备。

 

最后,重启设备。

现在可以使用pyenv安装几乎所有的python解释器,包括pypy、anaconda。

 

需要注意的是,pyenv只在电脑上搭建本地python环境。搭建python环境需要多种函数库。

在Ubuntu系统的电脑上,必须安装以下函数库以防止运行出现问题。

 

现在,要安装python解释器只需要执行以下指令。

 

pyenv installVERSION_YOU_WOULD_LIKE_TO_INSTALL

可以通过pyenv列出所有可用版本。

 

pyenv install --list

为了使上述过程更加具体,在此安装python3.7.5并且设置其为默认的全局解释器。

 

pyenv install 3.7.5pyenv global 3.7.5

输入Python-version指令,屏幕将显示Python3.7.5。

 

依赖性关系管理(DependencyManagement)

 

Python中的依赖性管理是项繁重的工作。有许多工具可以帮助完成这项任务。

 

我最常使用的工具是Poetry。

 

Poetry可以帮助你简单地完成如下工作。

 

管理项目依赖关系

通过虚拟环境将项目分开

轻松构建应用程序与函数库

 

推荐通过以下方式安装poetry:

 

curl -sSL https://raw.githubusercontent.com/sdispater/poetry/master/get-poetry.py | python

 

另外一种依赖性管理的方式是使用pip和pyenv-virtualenv指令。

大家可能会问:为什么不只用pip?

因为只用pip可能会在全局环境中安装poetry及其依赖项,这可能是你不需要也不想要的。

必要指令如下:

# Create a virtual environmentcalled tools that is based on 3.7.5	
pyenv virtualenv 3.7.5 tools	
# Install poetry into the tools virtual env	
pyenv activate tools	
pip install poetry	
# Check installed poetry version	
poetry --version	
# Leave the virtual env	
pyenv deactivate	
# This does not work yet	
poetry --version	
# Add your tools virtual env to the globally available ones	
pyenv global 3.7.5 tools	
# Now this works and you can start using poetry	
poetry --version

在使用poetry创建第一个项目之前,建议先对其进行配置,这样就可以在项目目录中的.venv文件夹中创建虚拟环境。

当你使用VsCode或Pycharm这类集成开发环境时就会变得非常方便,因为它们可以立即识别并选择正确的解释器。

poetry configsettings.virtualenvs.in-project true

注意:你只需设置一次配置,设置结果将在全局环境保留。

 

终于完成了使用poetry创建项目的所有准备工作,我把这个项目命名为dsexample,为了展示如何使用poetry,我添加了一个特定版本的pandas库,以及所有额外需求的fastapi框架。

# Initialze a new project	
poetry new dsexample	
cd dsexample	
# Add modules and create virtual environment.	
poetry add pandas=0.25 fastapi --extras all	
# As an example of how you could add a git module	
poetry add tf2-utils --git git@github.com:Shawe82/tf2-utils.git

格式一致性与可读性(Consistent Formatting and Readability)

 

现在,已经创建好了项目,即将开始添加代码。理想情况下,代码库的格式应该一致,以确保可读性和可理解性。这将是一个非常沉闷乏味的过程,尤其在还有其他人操作代码库时。

 

但用Black可以解决上述问题!

 

Black是一种让程序员在编写python代码时能将精力集中于核心内容的工具。它自动为代码添加格式,避免程序员手动添加格式。

因为Black的效果非常好,我们把它添加到dsexample中,让它为所有的文件添加格式。

# We add black as a developmentdependency with --dev as we don't# need it when it comes to productionpoetry add --dev black=19.3b0# Assume we are inside the current toplevel dsexample folderpoetry run black .

好了,现在所有的文件看起来非常整齐了。

 

类型纠正(Type-Correctness)

 

自Python3.5开始,类型注释开始成为标准库的一部分通过类型注释,代码更好理解,更易维护,不易出错。

为什么会不易出错呢?因为可以静态地检查变量和函数的类型是否符合预期。当然,必须是自动完成的。

 

下面介绍mypy!

 

Mypy是一种静态python代码检查器,作用是在错误发生之前找到他们。使用poetry向项目中添加mypy并进行代码检查与添加black一样简单。

# We add mypy as a developmentdependency with --dev as we don't	
# need it when it comes to production	
poetry add --dev mypy	
# Assume we are inside the current toplevel dsexample folder	
poetry run mypy .

运行mypy也可能导致很多麻烦。当然,可以将其设置为只对你关心的错误发出警告。这可以通过在项目中添加mypy.ini文件实现。

 

将自动化工具自动化(Automate the Automation)

 

使用black和mypy,我们不再需要手工为代码添加格式,并且可以避免不必要的错误。

但是我们仍需要手动使用这两个工具,这两个工具不是应该也自动化吗?

 

是的!

 

Pre-commit可以完成一切。

 

Pre-commit工具是在代码提交到仓库前执行检查(我默认读者的代码处在git的控制下)。无法通过检查的代码将被拒绝。

这样代码仓库就永远不会出现格式不整齐或是未经类型检查的代码,以及任何其他你需要检查错误的代码。

 

现在来安装pre-commit。

 

可以使用poetry将其直接安装在项目里,也可以安装在本地机器里。我倾向于后者,因为precommit只在本地使用,而不在CI/CD服务器上。

相反,black和mypy在CI/CD服务器上运行,因此,将它们添加到项目的dev依赖项是有意义的。

建议使用下面方法通过现有的工具虚拟环境安装它!

 

# Install pre-commit into the tools virtual env	
pyenv activate tools	
pip install pre-commit	
# Leave the virtual env	
pyenv deactivate	
# As we have already added the tool venv, it will work directly	
pre-commit --version

要使用pre-commit,首先需要向顶级文件夹中添加一个名为.pre-commit-config.yarm的文件。在该文件里,你需要配置所有应该运行的钩子。

在mypy与Black的环境下,文件内容如下所示:

 

repos:-   repo: https://github.com/ambv/black    rev: 19.3b0    hooks:    - id: black      language_version: python3.7-   repo: https://github.com/pre-commit/mirrors-mypy    rev: v0.740    hooks:    - id: mypy

最后,你必须执行以下命令以设置钩子。

 

# I assume your are in the toplevel folder	
pre-commit install

现在,钩子函数(hook)将在每次提交时运行。Black工具的钩子函数不仅会检查格式,还会相应地为文件添加格式。

每次添加新的钩子函数时,建议一开始在所有文件中手动运行pre-commit,因为它只能作用于上次提交之后更改过的文件。

pre-commit run --all-files

就这样,对自动化工具的自动化完成了。

2

总结

640?wx_fmt=gif

版权说明:本文内容来自网络、版权归原作者所有,如有侵权请联系删除。

回复下方「关键词」,获取优质资源

回复关键词「 pybook03」,立即获取主页君与小伙伴一起翻译的《Think Python 2e》电子版

回复关键词「入门资料」,立即获取主页君整理的 10 本 Python 入门书的电子版

回复关键词「m」,立即获取Python精选优质文章合集

回复关键词「book 数字」,将数字替换成 0 及以上数字,有惊喜好礼哦~

推荐阅读

Python 列表操作的高效方法与优化技巧 在Python编程中,列表是最常用的数据结构之一。无论是简单的数据存储,还是复杂的算法实现,列表都发挥着重要作用。随着数据量的增大,如何高效地操作列表,优化代码性能就变得至关重要。本文将为你详细介绍一些Python列表操作的高效方法与优化技巧。 阅读详情

相关推荐

Python Pandas 高级数据操作 优化技巧和最佳实践

使用 Python 的 Pandas 库进行数据操作时,采用一些优化技巧和遵循最佳实践可以显著提高代码的效率和性能。最佳实践和技巧可以帮助你编写更高效、更快速的 Pandas 代码,特别是在处理大型数据集时。在实际使用中,可以根据数据集的大小和复杂度来选择合适的优化技巧和最佳实践。

weixin_42098295的博客 1592

Python:设置项目环境

现在能在网上找到很多很多的学习资源,有免费的也有收费的,当我拿到1套比较全的学习资源之前,我并没着急去看第1节,我而是去审视这套资源是否值得学习,有时候也会去问一些学长的意见,如果可以之后,我会对这套学习资源做1个学习计划,我的学习计划主要包括规划图和学习进度表。分享给大家这份我薅到的免费视频资料,质量还不错,大家可以跟着学习。

m0_60606468的博客 1136

软件测试--用例篇(测试用例的好处、测试用例的七种设计方法、测试用例的粒度、测试用例的评价)

作为软件测试工程师,最主要的工作就是:编写测试用例,那么为什么要编写测试用例?它有什么好处?如何编写测试用例?测试用例写简单好还是复杂好?如何评价测试用例的质量? 天呐撸!能说不会吗?! 作为倾向软件测试工程师的老铁们,还是一起来学习吧! 一、编写测试用例的好处 测试用例是测试者的依据 测试用例使得工作可重复,是自动化测试的基础 补充:自动化测试的前提条件是:功能比较稳定,页面...

cherrydreamsover的博客 3735

用于管理虚拟环境的 Python 工具,记一次字节跳动Python社招面试

要进一步解析它:使用 Python 可执行文件作为您要在虚拟环境中使用的 Python 版本。这可能被称为python,如上所述,或者它可能是python3orpython3.8或python3.9甚至pypy3;你明白了。然后告诉它执行venv模块,然后是您希望虚拟环境驻留的目录的名称。如上所示,我通常使用名称.venv,或者为了提高知名度,使用venv应该有一个暂停,然后是一个名为的新目录.venv,您可以使用lsor看到该目录dir(在 Mac 和 Linux 上,由于。

2401_83621784的博客 1036

【清风数学建模笔记】第十一讲:时间序列分析

【清风数学建模笔记】第十一讲:时间序列分析

manerzi的博客 834

NWD 格式转换 STL 全流程:专业方案与迪威模型网在线转换详解

在3D模型处理中,将NWD文件转换为STL格式是常见的需求,特别是在3D打印和计算机辅助制造等领域。NWD文件由Autodesk开发,主要用于建筑、工程和施工行业,包含丰富的几何图形和材质信息,但因其专有格式和大文件大小,限制了其应用范围。相比之下,STL格式广泛应用于3D打印,仅包含表面几何信息。转换NWD到STL的原因包括拓展模型应用场景和便于模型编辑。转换方法包括使用专业软件如Autodesk Navisworks配合Blender或3ds Max,或使用专门的转换工具如CADExchanger。

技术说明博主 2541

【python虚拟环境管理】【mac m3】 使用pipx安装poetry

【python虚拟环境管理】mac m3 使用pipx安装poetry

hiliang521的博客 1740

八大核心深度学习算法详解:从CNN到Transformer的完整指南

深度学习作为人工智能的核心技术,通过多层神经网络模拟人脑学习机制。其基本原理是利用反向传播算法优化网络参数,从数据中自动提取特征表示。这一技术价值在于能够处理高维复杂数据,在图像识别、自然语言处理等领域实现突破性进展。卷积神经网络(CNN)通过局部连接和权值共享有效处理图像数据,而Transformer架构基于自注意力机制革新了序列建模方式。在实际工程实践中,CNN广泛应用于计算机视觉任务,如图像分类和目标检测;Transformer则成为自然语言处理的主流架构,支撑着BERT、GPT等预训练模型。本文系统

aoe41606的博客 432

windows11上,使用pipx安装Poetry,Poetry的安装路径是什么?

会将 Poetry 安装到一个独立的虚拟环境中,并将其可执行文件链接到一个集中的目录中。在这个目录中,你可以找到 Poetry 的虚拟环境文件。输出会显示 Poetry 的安装路径和可执行文件的位置。命令可以快速确认 Poetry 的安装路径。会将 Poetry 的可执行文件(目录中,以便在命令行中直接调用。安装 Poetry 时,

啃编程 1405

FPGA电路设计2——芯片原理图绘制

FPGA板卡设计要点:1. 引脚分配遵循电平标准分组原则,需通过预编译验证;2. 电源设计需满足上电时序要求并合理估算功耗;3. 最小系统包含配置Bank(Bank0)、通用I/O Bank(HRBank)、高性能Bank(HPBank)和高速收发器Bank(MGT/GTX)。其中Bank0负责关键配置功能,包括模式选择(支持SPI/BPI/JTAG等5种配置方式)、JTAG调试接口和系统监控引脚,其电压选择(CFGBVS_0)必须与VCCO_0电压匹配。

在读研究生,FPGA电路设计与功能开发。 1244

innovus:ccopt_design流程

我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起来吧?spec文件可以只创建一次,无需多次创建。2)virtual balance阶段。3)Full Balancing阶段。4)Clock Routing阶段。1)clustering阶段。

m0_61544122的博客 2483

pipx和poerty管理python程序

这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 欢迎使用Markdown编辑器 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Mar

Jimy_Fengqi 2436

华为OD机考双机位C卷 - 打印机队列 (Java & Python& JS & C/C++ & GO )

华为OD机考双机位C卷 - 打印机队列

算法大师! 4620

优化 Python 开发环境的几个神技巧

现在可以使用pyenv安装几乎所有的python解释器,包括pypy、anaconda。需要注意的是,pyenv只在电脑上搭建本地python环境。搭建python环境需要多种函数库。在Ubuntu系统的电脑上,必须安装以下函数库以防止运行出现问题。

zhishi0000的博客 840

YOLOv26全流程实战手册:从yaml配置拆解到训练推理参数调优(附虚拟环境搭建)

以“车辆、行人、小型物体”3类数据集为例,修改# 1. 修改类别数nc: 3# 2. 调整锚框(适配小目标)anchors:- [12,16, 16,24, 33,23] # 增加小锚框# 3. 轻量化调整(边缘部署)depth_multiple: 0.25 # 降低深度系数width_multiple: 0.20 # 降低宽度系数# 其余Backbone/Head结构不变yaml配置:核心是调整nc(类别数)、(轻量化)、anchors(适配目标尺度);虚拟环境。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 879

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

Python if 语句优化技巧

大家好!今天我们来聊聊Python中的if语句优化技巧。if语句是Python中最基本的控制结构之一,它用于根据条件执行不同的代码块。虽然if语句本身非常简单,但通过一些小技巧,可以让我们的代码更加高效、简洁。接下来,我们将逐步介绍这些技巧。

weixin_53707653的博客 3023

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

python有哪些常见的开发环境_优化Python开发环境的技巧有哪些

今天小编要跟大家分享的文章是关于优化Python开发环境的技巧有哪些。用Python编代码体验极佳,并且随着新版本的发布越来越好!对于很多人而言,Python提供的大量免费函数库、高可读性的程序和新引入的类型注释让很多爱不释手。然而,数据科学家特别容易使自己的Jupyter notebook变得庞大而杂乱,或者写出一些难以理解的python文件。此外,当一个项目依赖于同一函数库的不同版本时,常常发...

weixin_39721370的博客 185

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

7个Python内存优化技巧,你用过几个?

当我们的项目变得越来越大时,高效管理计算资源是一个不可避免的要求。不幸的是,与低级语言如C或C++相比,Python在内存效率方面似乎不够。那么,现在应该更改编程语言吗?当然不是。事实上,有许多方法可以显著优化Python程序的内存使用,从优秀的模块和工具到先进的数据结构和算法。本文将聚焦于Python的内置机制,并介绍7个原始但有效的内存优化技巧。掌握这些技巧将显著提高我们的Python编程技能...

Warmer_Sweeter 2236
上一篇: 不会数学,入门机器学习有戏吗?
下一篇: 潘石屹为什么要学习 Python?
codingpy
博客等级 码龄11年 1873粉丝 104原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值