问题

目前比较好用的python开发工具是哪一个?

回答
这个问题问得好!Python开发工具的选择确实是个让人眼花缭乱的话题,毕竟市面上好用的确实不少。要说“目前最好用”的,那得看你具体的需求和个人偏好了。不过,如果一定要挑几个目前最主流、用户群最广、功能最完善的来聊,我肯定会把以下几款放在最前面。

1. PyCharm (JetBrains出品,专业Python IDE的标杆)

要说Python开发,PyCharm绝对是绕不开的名字。它是由JetBrains这家以打造高质量IDE闻名的公司开发的,所以它的专业性毋庸置疑。

为什么好用?
智能代码助手: 这是PyCharm的灵魂。它能做到真正的“懂你”。在你敲代码的时候,它会实时检查你的语法错误、潜在的bug,并给出非常精准的建议。自动补全功能更是强大到离谱,你只需要输入几个字母,它就能猜到你想写什么,并且提供上下文相关的变量、函数、类名等,极大地提升了编码效率。
强大的调试器: 调试是开发中不可或缺的一环。PyCharm的调试器界面直观,功能强大,支持断点设置、单步执行、变量查看、表达式求值等等,能让你轻松定位和修复bug。
版本控制集成: PyCharm对Git等版本控制系统有非常好的支持,你可以在IDE内部完成代码的提交、拉取、合并、分支管理等操作,无需频繁切换到命令行。
Web开发框架支持: 如果你做Web开发,PyCharm对Django、Flask、Pyramid等主流框架的支持非常到位,有专门的代码提示、运行配置,甚至能帮你生成代码片段。
虚拟环境管理: 轻松创建和管理Python的虚拟环境(venv, conda),避免不同项目之间的库版本冲突。
数据库工具: 内置了数据库工具,可以连接多种数据库,直接在IDE里执行SQL查询、查看数据。
科学计算支持: 对于数据科学和机器学习领域的开发者,PyCharm也提供了非常友好的支持,比如对Jupyter Notebook的集成、对NumPy、Pandas、Matplotlib等库的优化。
高度可定制: 主题、快捷键、插件等都可以根据自己的喜好进行配置,打造最适合自己的工作环境。

需要注意什么?
资源占用: 作为一个功能齐全的IDE,PyCharm的资源占用相对较高,对电脑配置有一定要求,尤其是运行大型项目时。
学习曲线: 虽然易于上手,但要充分发挥其所有高级功能,需要一定的时间去学习和探索。
价格: PyCharm有免费的社区版(Community Edition)和付费的专业版(Professional Edition)。社区版已经足够强大,但一些Web开发、数据库工具等高级功能只在专业版提供。

2. VS Code (Visual Studio Code,轻量级但功能强大的代码编辑器)

VS Code是微软推出的一款免费、开源的代码编辑器,但它凭借其极强的扩展性和灵活性,已经演变成了一个功能堪比IDE的开发环境。

为什么好用?
轻量与速度: 相较于PyCharm,VS Code启动速度更快,占用资源更少,对于配置较低的电脑用户来说是个不错的选择。
极强的扩展性: 这是VS Code最大的魅力所在。通过安装各种插件,你可以将其打造成任何你想要的开发环境。
Python插件: 官方的Python插件提供了语法高亮、智能补全(基于Pylance)、Linting(代码风格检查)、Debugging(调试)、Jupyter Notebook支持等核心功能。
Linting和Formatting插件: 如ESLint、Prettier、Black、Flake8等,可以帮助你写出规范、高质量的代码。
版本控制插件: GitLens等插件极大地增强了Git的使用体验。
数据库插件: 可以连接和操作各种数据库。
远程开发插件: 配合Docker、SSH等,可以方便地在远程服务器或容器中进行开发。
用户体验: 界面简洁美观,易于导航,自定义选项也非常丰富。
跨平台: 支持Windows, macOS, Linux,在任何平台上都能获得一致的体验。
免费: 这是它吸引大量用户的关键因素之一。

需要注意什么?
“丐版”到“顶配”的转变: VS Code的强大很大程度上依赖于插件。你需要花时间去寻找和配置适合你的插件,否则它可能只是一个“好看的文本编辑器”。
智能程度: 虽然Pylance(VS Code默认的Python语言服务器)已经很强大,但在某些特定场景下,PyCharm在智能代码提示和重构方面的表现可能略胜一筹。
集成度: 很多功能(如数据库管理、Web框架的特定调试)可能需要安装额外的插件,不如PyCharm那样“开箱即用”。

3. Jupyter Notebook/Lab (交互式数据分析与机器学习的利器)

如果你主要从事数据科学、机器学习、数据分析等领域,那么Jupyter Notebook或其升级版JupyterLab绝对是你的首选。

为什么好用?
交互式执行: 以“单元格”为单位执行代码,可以实时看到结果,非常适合探索性数据分析、快速原型开发和实验。
代码与文档结合: 可以将代码、文字、图表、公式等混合在一个文档中,生成可读性极强的报告或教程。
丰富的可视化: 配合Matplotlib、Seaborn、Plotly等库,可以直接在Notebook中生成各种图表,直观地展示数据分析结果。
支持多种语言: 虽然以Python闻名,但Jupyter也支持R、Julia、Scala等多种语言内核。
JupyterLab的增强: JupyterLab在Notebook的基础上提供了更接近IDE的体验,比如文件浏览器、终端、代码编辑器、调试器等集成在一起,更加方便。

需要注意什么?
不适合大型项目开发: 对于大型、复杂的软件项目,Jupyter Notebook的组织性、可维护性不如传统的IDE。
版本控制问题: Notebook的`.ipynb`文件是JSON格式,直接用Git管理时,代码和输出内容的diff可能不太直观,容易出现冲突。
调试能力: 虽然JupyterLab集成了调试器,但相比PyCharm或VS Code的专业调试器,在复杂调试场景下可能略显不足。

4. Sublime Text (曾经的王者,依然有活力)

Sublime Text是一款非常流行的、轻量级的代码编辑器,以其速度、简洁和高度可定制性闻名。

为什么好用?
速度与响应: 启动速度极快,操作流畅,即使打开很大的文件也能保持不错的性能。
简洁的界面: 默认界面非常干净,干扰少,有助于集中注意力。
强大的编辑功能: 支持多重选择、代码折叠、命令面板(Command Palette)等,提高了编辑效率。
丰富的插件生态: 通过Package Control安装插件,可以实现代码补全、语法高亮、Linting、版本控制等功能,让它变得更加强大。

需要注意什么?
免费试用,但有购买提示: 官方版本是付费软件,虽然可以无限期试用,但会时不时弹出购买提示。
智能程度: 相比PyCharm或VS Code,其原生代码智能提示和重构能力相对较弱,需要依赖插件,并且配置起来可能比VS Code复杂一些。
集成度: 想要获得接近IDE的体验,需要花费更多精力去安装和配置各种插件,并且其集成度不如VS Code或PyCharm。

总结一下,如何选择?

追求极致的Python开发体验,不差硬件和一点费用: PyCharm Professional 是你的不二之选。它的智能程度、集成度和对各种开发场景的支持是其他工具难以比拟的。
想要一个免费、轻量、高度可定制的工具,并且愿意花时间去配置: VS Code 是非常棒的选择。它的插件生态是它的核心竞争力,可以满足几乎所有Python开发的需求。
主要从事数据科学、机器学习、数据分析,需要交互式探索和可视化: Jupyter Notebook/Lab 是必不可少的。
如果你非常喜欢简洁、快速的编辑器,且不追求过于复杂的IDE功能: Sublime Text 依然是个不错的备选,但要注意它的插件配置和与VS Code的对比。

我的个人看法(不代表绝对真理):

如果让我现在推荐一个“主力”工具,我会更倾向于VS Code。原因有几点:
1. 免费且开源,门槛低。
2. 性能平衡,大部分情况下比PyCharm流畅。
3. 生态系统极其活跃,无论是Python还是其他语言,都能找到高质量的插件。
4. 可以无缝切换到Web开发、前端开发等其他领域,学习成本低,通用性强。

但是,对于那些需要深度、复杂Python项目开发,特别是Web后端开发(如Django/Flask),或者对代码重构、智能提示有极致要求的开发者,PyCharm Professional 的强大依然是无可替代的。

最终的选择,还是取决于你自己的工作内容、电脑配置、以及你愿意投入多少时间和精力去学习和配置。不妨都试一试,看看哪个最顺手,哪个最能帮你把代码写得更快、更好。

网友意见

user avatar

PDM 是一个新的 Python 的包管理器,也许你还未知晓它的存在,但实际上PDM 已经诞生两年,并在 2021 年发布 1.0 版本,目前最高的版本是 1.12.8。

在刚听到 PDM 时,我下意识认为它是 Python Development Manager,又一个和 Pipenv 和 Poetry 一样换汤不换药的虚拟环境管理工具。

一直到我翻到了作者的博客,才知道 PDM 的全称是 Python Development Master,比我想像的还要牛逼一个档次。

值得一提的是,PDM 的作者是 PyPa 成员、Pipenv 目前主要的维护者之一,最重要的是,他是中国人,因此这是一款国人开发的工具。

# 1. Why PDM?

早期的包管理器(如 Pipevn,Poetry),都是基于虚拟环境的,虚拟环境主要是为了隔离项目开发环境,但如果涉及到虚拟 环境嵌套虚拟环境,问题就难搞了,经常会出现问题。

PDM 得益于一个 2018 年的 PEP 提案(PEP582,Python local packages directory),完全摒弃了虚拟环境。

从作者的博客上来看,当初之所以要重复造个轮子,完全是因为 Pipenv 和 Poetry 都不够好用,正好有 PEP582 ,可以开发一个划时代的 Python 包管理工具,它就是 PDM 。

PDM 包含如下特性:

  • PEP 582 本地项目库目录,支持安装与运行命令,完全不需要虚拟环境。
  • 一个简单且相对快速的依赖解析器,特别是对于大的二进制包发布。
  • 兼容 PEP 517 的构建后端,用于构建发布包(源码格式与 wheel 格式)
  • 拥有灵活且强大的插件系统(有插件系统直接就拉开一个档次)
  • PEP 621 元数据格式
  • 像 pnpm 一样的中心化安装缓存,节省磁盘空间

尽管 PDM 是国人开发,但考虑到国际化,官网文档是全英文的。

我花了整整一天,通读完文档,消化了 70% 的 PDM 用法,现将心得整理分享出来,会对你上手 PDM 有帮助。

关于 PDM,内容挺多的,打算分两部分文章来完整地介绍它:

  • 面向新手的入门级教程
  • 面向骨灰级选手的教程

本篇是第一篇,先让大家对 pdm 的基本用法有一个框架性的理解,而 pdm 真正竞争力请持续关注后续文章。

# 2. 安装 PDM

PDM 的安装方法有很多种,在官网上就有 6 种,比如 pip、pipx、homebrew 等

在以前的文章中,我推荐过 pipx 工具,在安装那种命令行应用的包时非常好用。

详情:使用 pipx 工具安装命令行工具

而此时 PDM 就是一个命令行工具,因此我也推荐使用 pipx 安装,方便统一对命令行进行管理

执行 pipx install pdm 即可安装

PDM 只有 Python 3.7+ 的版本才能使用,使用其他的方法安装,要先保证你的 Python 版本,但使用 pipx 则不需要你去操心。

# 3. 初始化 PDM

执行 pdm init 就会开始初始化,初始化的时候,会让你选择项目的一些信息

  • 是否要上传 PyPI
  • 依赖的 Python 版本
  • License 类型
  • 作者信息
  • 邮箱信息

我机器上有 Python 2.7 和 Python 3.10 两个版本,在初始化项目时会把机器上的所有 Python 版本都扫描出来了,会让选择项目的 Python 版本。

完成之后,PDM 会将你的选择以 toml 格式写入 pyproject.toml 配置文件中。

# 4. PDM 用法

pdm 有非常多的命令,使用 -h 可以看到帮助菜单

4.1 安装包

和 Poetry 一样,安装使用的是 add 命令,但 pdm 的 add 比 poetry 好用,主要体现在分组,具体请关注后续文章

4.2 查看包

使用 pdm list 可以以列表形式列出当前环境已安装的包

再加个 --graph 就能以树状形式查看,直接依赖包和间接依赖包关系的层级一目了然

pdm list 还有两个选项:

  • --freeze:以 requirements.txt 的格式列出已安装的包
  • --json:以 json 的格式列出已安装的包,但必须与 --graph 同时使用

要查看某个包的某体详情,直接用 pdm show 即可

4.3 删除包

删除包使用的是 remove 命令

4.4 项目配置

不加任何参数,可以打印出该项目的环境配置

想要修改的话,只要加 key 和 value 做为参数即可,以修改 pypi 镜像代理为例

原来上面是豆瓣源,现在我要改成阿里源,只需要执行如下命令,可比 poetry 方便多啦~

pdm config 里面有非常多的配置,想要一一搞清楚的可以去官网查阅:pdm.fming.dev/configura

4.5 运行命令

想要在 pdm 的环境中执行命令或者项目,可以使用 run 命令,若是执行项目时,有诸多参数,可以在 pyproject.toml 配置命令别名,具体用法,请往后看

4.6 查看环境

使用 info 命令,可以查看当前项目的环境信息

4.7 更新包

更新的话,简单的场景下,使用下面这两条即可

       # 更新所有包 pdm update   # 更新某个包 pdm update <pkg>     

复杂的场景,pdm 也都为你考虑到了,它提供了很多选项,可以根据需要使用(以下如有解释错误,请帮忙指正)

  • --save-compatible:项目依赖可兼容的版本
  • --save-wildcard:保存通配符版本(暂不明白)
  • --save-exact:保存有指定确切版本的包
  • --save-minimum:保持最小版本的包
  • --update-reuse:尽量只更新命令行中指定的包,其依赖包能不更新则不更新
  • --update-eager:更新某个包顺带更新其依赖包(递归升级)
  • --prerelease:允许使用预发布版本
  • --unconstrained:忽略包版本的约束,可将包升级至最新版本
  • --top:仅更新有在 pyproject.toml 的包
  • --dry-run:试运行,而不去修改 lock 文件
  • --no-sync:只更新 lock 文件,但不更新包

如果你的依赖包有设置分组,还可以指定分组进行更新

       pdm update -G security -G http     

也可以指定分组更新分组里的某个包

       pdm update -G security cryptography     

再加个 -d 就可以再指定 dev 依赖

       # 更新所有的 dev 依赖 pdm update -d  # 更新 dev 依赖下某个分组的某个包 pdm update -dG test pytest     

同样地,也可以指定 --prod 或者 --production 升级非 dev (即生产)的包。

4.8 切换 py

当你在初始化 pdm 项目时,就已经选定了当前的 Python 版本和可用的 Python 版本范围,后面如果想更改,可以使用 use 命令,但版本要受之前设定的版本范围约束。

假设允许范围是 python 3.9+,当前使用的是 python 3.10,可以直接切换过去。

       pdm use python3.9     

# 5. 命令别名

在 pyproject.toml 添加 [tool.pdm.scripts] 可以设置快捷命令别名,若项目的执行有非常多的参数,这种设定别名的方法将很有用。

[tool.pdm.scripts] 有两种形式

       # 第一种 [tool.pdm.scripts] start = "python main.py"  # 第一种 [tool.pdm.scripts] start = {cmd = "python main.py"}     

但若想在参数中加注释,就必须得使用第二种方法,例如这样

       [tool.pdm.scripts] start = {cmd = [     "flask",     "run",     # Important comment here about always using port 54321     "-p", "54321" ]}     

除了 cmd 之外,还有两个参数

一个是 shell 参数,从输出来看你应该和看出和 cmd 的区别,和 subprocess.Popen() with shell=True 差不多一个意思

一个是 env_file 参数,可以指定配置环境变量的文件

       [tool.pdm.scripts] start.cmd = "flask run -p 54321" start.env_file = ".env"     

如果想要把这个环境变量的文件不仅限于某个命令,而是 pdm run 全局,可以这样配置

       [tool.pdm.scripts] _.env_file = ".env"     

--list 或者 -l可以查看所有设置的快捷别名

对于每一个快捷命令,都可以设置 pre 和 post 命令:

  • pre 命令:在每次快捷命令执行前会执行
  • post 命令:在每次快捷命令执行后会执行
       [tool.pdm.scripts] pre_compress = "{{ Run BEFORE the `compress` script }}" compress = "tar czvf compressed.tar.gz data/" post_compress = "{{ Run AFTER the `compress` script }}"     

# 6. 自动补全

pdm 的命令虽多,但并不复杂,并不太需要使用自动补全,若你真的需要补全,也可以实现。

对于不同的 shell,自动补全的配置方式都不太一样,这个在官网上有详细的说明。

如果你和我一样使用的 zsh,可以参照我的配置方式。

截图中间有一步是 vim ~/.zshrc ,是将 pdm 插件配置到 zsh 中

       plugins=(git z macos extract zsh-syntax-highlighting zsh-autosuggestions pdm)     

# 7. 方案兼容

其他方案迁移到 pdm

pdm 足够好用,也足够开放,如果你当前使用的是其他的包管理器,比如 pipenv ,poetry,或者还在用最原始的 requirements.txt ,你也可以很方便的迁移到 pdm 中来:

  • 使用 pdm import -f {file} 无需初始化,直接转换
  • 执行 pdm init 或者 pdm install 的时候,会自动识别你当前的依赖情况并转换

pdm 迁移到其他方案

同样的,你也可以当 pdm 管理的项目,导出为其他方案

pyproject.toml 和 pdm.lock是 pdm 的两个核心文件。

pdm 做为一个后起之秀,也没有忘本,它支持:

  • 将 pyproject.toml 转成 setup.py
    pdm export -f setuppy -o setup.py
  • 将 pdm.lock 转成 requirements.txt
    pdm export -o requirements.txt

# 8. 总结一下

花了很大的力气,终于把 PDM 的基本用法给介绍完毕,相信一定会有人会提出质疑:这就是你所谓的 划时代的包管理器

实际上,上面仅仅是入门操作,而 PDM 的一些核心知识,考虑到篇幅有限,我将这些进阶类的内容安排在后续文章,它将包括但不仅限于:

  • PDM 的原理剖析:PEP 582 提案
  • 发布包的构建:PEP 517 提案
  • Hook 脚本的定义与使用
  • 插件管理系统与自定义插件
  • 缓存管理系统的介绍

这些内容是 PDM 的核心,只有理解了这些,你才能真正用好 PDM,到那时你会感慨:为什么 Guido 还不把这样的工具收编成标准的包管理工具?

关于 PDM 后续进阶文章,请关注我的个人公众号《写点代码的明哥》

我会在那里持续更新关于 PDM 的进阶用法



关于包和虚拟环境管理工具,很多工具我都写过专门的文章介绍过



感兴趣想系统学习的,可以访问这个链接:python.iswbm.com/


最后做个小调查

你平时使用什么包管理工具?

1、requirements.txt

2、virtualenv

3、pipenv

4、poetry

5、venv

6、其他


有了PDM,你还会使用这些工具吗?

1、会

2、不会

3、再了解一下


欢迎你在评论区分享一下

类似的话题

本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度google,bing,sogou

© 2025 tinynews.org All Rights Reserved. 百科问答小站 版权所有