Python环境管理大比拼:pip、Conda、Pyenv、Rye、Virtualenv、PDM、Poetry等工具

Python 虚拟环境终极指南:16 款工具分类盘点,一文终结你的选择困难症 本文全面解析了Python虚拟环境工具的16种方案,帮助开发者解决依赖管理和环境隔离问题。文章将工具分为五大类: 基础隔离工具:如Python内置的venv和virtualenv,适合简单场景 全能一体化工具:如Poetry和PDM,提供依赖管理+环境隔离 数据科学生态:Conda、Mamba等,擅长处理非Python依赖 Rust新贵:如uv,速度极快,性能提升10-100倍 辅助工具:如pyenv和pipx,补充特定功能 文章对比了各工具的优缺点和适用场景,推荐新项目优先考虑uv或Poetry,数据科学 阅读详情
👇我的小册 45章教程:(小白零基础用Python量化股票分析小册) ,原价299,限时特价2杯咖啡,满100人涨10元。

原文:https://alpopkes.com/posts/python/packaging_tools

译文:https://juejin.cn/post/7325611798135767090 

译者:hashcon 作者在 EuroPython 2023 上的演讲:https://www.youtube.com/watch?v=3-drZY3u5vo 译者做的视频翻译版本:https://www.bilibili.com/video/BV1EC4y1C7f8

背景知识

当我开始使用 Python 并创建我的第一个包时,我很困惑。创建和管理包似乎比我预想的要困难得多。此外,存在多种工具,但我不确定该使用哪一种。我相信你们大多数人过去都遇到过同样的问题。Python 有无数的工具来管理虚拟环境和创建包,但很难(或几乎不可能)了解哪一个适合您的需求。存在一些关于该主题的演讲和博客文章,但它们都没有给出完整的概述或以结构化的方式评估这些工具。这就是这篇文章的主题。

工具分类

本文划分五个对于环境和包管理方面很重要的类别:

  • Python 版本管理

  • 包管理

  • 环境管理(主要涉及虚拟环境)

  • 包构建

  • 包发布

正如下面的维恩图中所示,存在很多工具。有些是单一用途的,有些是多面手:dac6881f5d0bb791cc2e858a10ac906a.jpeg

让我们从开发人员的角度来浏览一下这些类别:假设您同时处理个人项目和工作项目。在工作中,您使用的是 Python 3.7,而您的个人项目应该使用最新的 Python 版本(当前为 3.11)。换句话说:您希望能够安装不同的 Python 版本并在它们之间进行切换。这就是我们的第一个类别,Python 版本管理的内容。

在您的项目中,您正在使用其他软件包(例如 pandas 或 sklearn 用于数据科学)。这些是您必须安装和管理的项目的依赖项(例如,在发布新版本时进行升级)。这就是包管理的意义所在。

由于不同的项目可能需要同一包的不同版本,因此您需要创建(和管理)虚拟环境以避免依赖冲突。用于此目的的工具收集在环境管理类别中。大多数工具使用虚拟环境,但有些工具使用另一个称为 “本地包”(Local Packages) 的概念,我们稍后会讨论。

您可能希望与其他开发人员共享您的代码。为此,您首先必须构建包(包构建),然后才能将其发布到 PyPI 或其他索引(包发布)。

下面我们将更详细地了解每个类别,包括简短的定义、动机和可用的工具。我将在最后的单独部分中更详细地介绍一些单一用途工具和一些多用途工具。我们先从第一类开始:Python 版本管理。

Python版本管理

定义

一个可以进行 Python 版本管理的工具,可以让你轻松安装 Python 版本并在它们之间切换。

动机

为什么我们要使用不同的 Python 版本?有几个原因。例如,您可能正在处理多个项目,其中每个项目都需要不同的 Python 版本。或者,您可能开发一个支持多个 Python 版本的项目,并且想要测试所有版本。除此之外,检查最新的 Python 版本所提供的功能,或者测试 Python 的预发布版本是否存在错误也是不错的选择。

工具

我们的维恩图显示了可用于 Python 版本管理的工具:pyenv, conda, rye 和 PyFlow。我们将首先在单独的部分中查看 pyenv 并考虑多用途工具。

5a5af289471c7d4b22cf01d61b569774.jpeg

Python 自带一个单一用途的工具,可让您安装和管理 Python 版本:pyenv!Pyenv 很容易使用。最重要的命令如下:

# 安装特定版本的 Python
pyenv install 3.10.4

# 在不同的 Python 版本之间切换

# 仅针对当前 shell 切换 Python 版本
pyenv shell <version> 
# 在这个目录下,自动使用某个 Python 版本
pyenv local <version> 
# 针对当前用户,全局设定 Python 版本
pyenv global <version>

(虚拟)环境管理

定义

环境管理工具,允许您创建和管理(虚拟)环境。

动机

为什么我们首先要使用环境?正如一开始提到的,项目有特定的要求(即它们依赖于其他包)。通常情况下,不同的项目需要同一包的不同版本。这可能会导致依赖冲突。此外,使用 pip install 安装包时可能会出现问题,因为该包与系统范围的 Python 安装一起放置。其中一些问题可以通过使用命令 --user 中的标志来解决。然而,这个选项可能并不是每个人都知道,尤其是初学者。

工具

许多工具允许用户创建和管理环境。它们是:venv, virtualenv, pipenv, conda, pdm, poetry, hatch, rye 和 PyFlow。其中只有两个是单一用途工具:venv 和 virtualenv。让我们先来看看这两个:

98c8847d16902dd84aa8b30279eee815.jpeg

venv

venv(docs.python.org/3/library/v…) 是用于创建虚拟环境的内置 Python 包。最重要的命令如下:

# 创建一个新的环境
python3 -m venv <env_name>

# 使用这个环境
. <env_name>/bin/activate

# 关闭这个环境
deactivate

virtualenv

virtualenv (virtualenv.pypa.io/en/latest/)尝试改进 venv. 它提供的功能更多,速度更快,功能更强大。最重要的命令与 venv 基本一样:

# 创建一个新环境
virtualenv <env_name>

# 启用这个环境
. <env_name>/bin/activate

# 关闭这个环境
deactivate

包管理

pyproject.toml

在我们讨论打包之前,我想确保您了解打包最重要的文件:pyproject.toml.

Python 的打包已经取得了长足的进步,在 PEP 518 之前,setup.py 文件用于打包,setuptools 作为构建工具。PEP 518 引入了 pyproject.toml 文件的用法。因此,在创建包时始终需要一个 pyproject.toml 文件,用于定义项目的设置、定义元数据和许多其他内容。一个示例是 pandas 的 pyproject.toml 文件:

github.com/pandas-dev/…

[build-system]
# Minimum requirements for the build system to execute.
# See https://github.com/scipy/scipy/pull/12940 for the AIX issue.
requires = [
    "meson-python==0.13.1",
    "meson==1.2.1",
    "wheel",
    "Cython==3.0.5",  # Note: sync with setup.py, environment.yml and asv.conf.json
    # Any NumPy version should be fine for compiling.  Users are unlikely
    # to get a NumPy<1.25 so the result will be compatible with all relevant
    # NumPy versions (if not it is presumably compatible with their version).
    # Pin <2.0 for releases until tested against an RC.  But explicitly allow
    # testing the `.dev0` nightlies (which require the extra index).
    "numpy>1.22.4,<=2.0.0.dev0",
    "versioneer[toml]"
]

build-backend = "mesonpy"

[project]
name = 'pandas'
dynamic = [
  'version'
]
description = 'Powerful data structures for data analysis, time series, and statistics'
readme = 'README.md'
authors = [
  { name = 'The Pandas Development Team', email='pandas-dev@python.org' },
]
license = {file = 'LICENSE'}
requires-python = '>=3.9'
dependencies = [
  "numpy>=1.22.4; python_version<'3.11'",
  "numpy>=1.23.2; python_version=='3.11'",
  "numpy>=1.26.0; python_version>='3.12'",
  "python-dateutil>=2.8.2",
  "pytz>=2020.1",
  "tzdata>=2022.7"
]
classifiers = [
# 省略后续

.lock 文件

还有一个对于打包很重要的文件:锁定文件(xxx.lock)。pyproject.toml 包含抽象依赖关系,锁定文件包含具体依赖关系。它记录了为项目安装的所有依赖项的确切版本(例如 pandas==2.0.3)。这使得项目在多个平台上具有可重复性,例如下面的 github.com/python-poet…:

# This file is automatically @generated by Poetry 1.7.1 and should not be changed by hand.

[[package]]
name = "build"
version = "1.0.3"
description = "A simple, correct Python build frontend"
optional = false
python-versions = ">= 3.7"
files = [
    {file = "build-1.0.3-py3-none-any.whl", hash = "sha256:589bf99a67df7c9cf07ec0ac0e5e2ea5d4b37ac63301c4986d1acb126aa83f8f"},
    {file = "build-1.0.3.tar.gz", hash = "sha256:538aab1b64f9828977f84bc63ae570b060a8ed1be419e7870b8b4fc5e6ea553b"},
]

[package.dependencies]
colorama = {version = "*", markers = "os_name == \"nt\""}
importlib-metadata = {version = ">=4.6", markers = "python_version < \"3.10\""}
packaging = ">=19.0"
pyproject_hooks = "*"
tomli = {version = ">=1.1.0", markers = "python_version < \"3.11\""}

[package.extras]
docs = ["furo (>=2023.08.17)", "sphinx (>=7.0,<8.0)", "sphinx-argparse-cli (>=1.5)", "sphinx-autodoc-typehints (>=1.10)", "sphinx-issues (>=3.0.0)"]
test = ["filelock (>=3)", "pytest (>=6.2.4)", "pytest-cov (>=2.12)", "pytest-mock (>=2)", "pytest-rerunfailures (>=9.1)", "pytest-xdist (>=1.34)", "setuptools (>=42.0.0)", "setuptools (>=56.0.0)", "setuptools (>=56.0.0)", "setuptools (>=67.8.0)", "wheel (>=0.36.0)"]
typing = ["importlib-metadata (>=5.1)", "mypy (>=1.5.0,<1.6.0)", "tomli", "typing-extensions (>=3.7.4.3)"]
virtualenv = ["virtualenv (>=20.0.35)"]

定义

包管理工具能够下载和安装库及其依赖项。

动机

为什么我们需要包?包允许我们定义模块的层次结构并使用"."语法,例如 from package.module import my_function 轻松访问模块。此外,它们还可以轻松地与其他开发人员共享代码。由于每个包都包含一个 pyproject.toml 定义其依赖项的文件,因此其他开发人员不必单独安装所需的包,而只需从其 pyproject.toml 文件中安装该包即可。

工具

许多工具可以执行包管理:pip, pipx, pipenv, conda, pdm, poetry, rye 和 PyFlow.

其中,pip 可能是最众所周知的,它也是这里的专门只用来做包管理的工具。

47425366bcd3833342fe846aebc50fc9.jpeg

Python 的标准包管理器是 pip(pip.pypa.io/en/stable/),它随 Python 一起提供,并允许您从 PyPI 和其他索引安装包。主要命令(可能是 Python 开发人员学习的第一个命令之一)是 pip install <package_name>。

多用途工具

接下来进入非单一用途的工具

pipenv

顾名思义,pipenv 结合了 pip 和 virtualenv。它可以执行虚拟环境管理和包管理,正如我们在维恩图中看到的那样:

f6bf9533ce136e5b31e1e9f64f93edba.jpeg

pipenv 引入两个附加文件:

  • Pipfile:是一个 toml 文件(类似于 pyproject.toml),用于定义项目依赖项

  • Pipfile.lock:允许确定性构建。它消除了对 requirements.txt 文件的需要,并通过锁定操作自动管理。

最重要的pipenv命令是:

# 安装某个包
pipenv install <package_name>

# 在虚拟环境运行某个脚本
pipenv run <script_name.py>

# 启用虚拟环境
pipenv shell

Conda

Conda 是一个通用的包管理系统。这意味着它不限于 Python 包。Conda 是一个具有很多功能的巨大工具。存在很多教程和博客文章(例如官方的),因此我不会在这里详细介绍。但是,我想提一件事:虽然可以构建和发布包,但 conda 我没有将该工具包含在适当的类别中。这是因为打包的 conda 工作方式略有不同,并且生成的包将是 conda 包。

fcda98519370dde82291c56e37d871e3.jpeg

特征评估

接下来我将比较不同工具的以下维度的特点:

  • 该工具是否管理依赖关系?

  • 它是否解析/锁定依赖关系?

  • 是否有干净的构建/发布流程?

  • 它允许使用插件吗?

  • 它支持 PEP 660(可编辑安装:peps.python.org/pep-0660/)吗?PEP 660 是关于基于构建的可编辑安装 pyproject.toml。当您使用安装软件包时,pip 您可以选择使用 pip install -e package_name 来以可编辑模式安装它。当您开发包并希望您的更改直接反映在您的环境中时,这是一个重要的功能。

  • 它支持 PEP 621(项目元数据:peps.python.org/pep-0621/)吗?PEP 621 指定如何在 pyproject.toml 文件中写入项目的核心元数据。我添加这个评判维度是因为一个包(剧透:它是 poetry)当前不支持此 PEP,但使用自己的方式来声明元数据。

Flit

Flit(flit.pypa.io/en/stable/)尝试创建一种简单的方法将 Python 包和模块放在 PyPI 上。它有一个非常具体的用例:它旨在用于打包纯 Python 包(即没有构建步骤的包)。它不关心任何其他任务:

  • Python版本管理:❌

  • 包管理:❌

  • 环境管理:❌

  • 构建包:✅

  • 发布包:✅

这也反映在我们的维恩图中:

4875deef696f5bf26b2f1ca8598060f0.jpeg
  • 该工具是否管理依赖关系?❌

  • 它是否解析/锁定依赖关系?❌

  • 是否有干净的构建/发布流程?✅

  • 它允许使用插件吗?❌

  • 它支持 PEP 660 吗?✅

  • 它支持 PEP 621 吗?✅

主要命令有:

# 创建新的 pyproject.toml
flit init

# 构建并发布 
flit publish

Poetry

Poetry 是众所周知的工具。正如维恩图中所示,它可以执行除 Python 版本管理之外的所有操作:

  • Python版本管理:❌

  • 包管理:✅

  • 环境管理:✅

  • 构建包:✅

  • 发布包:✅

50adb90e110c7c9b6ffa9d3f5fa27256.jpeg

Poetry 不支持 PEP 621。GitHub 上关于此问题的开放问题已有大约 1.5 年的时间,但还是没有解决(github.com/python-poet…)。

  • 该工具是否管理依赖关系?✅

  • 它是否解析/锁定依赖关系?✅

  • 是否有干净的构建/发布流程?✅

  • 它允许使用插件吗?✅

  • 它支持 PEP 660 吗?✅

  • 它支持 PEP 621 吗?❌

主要命令:

# 创建目录结构和 pyproject.toml
poetry new <project_name>

# 交互式创建 pyproject.toml
poetry init

# 从 pyproject.toml 安装依赖
poetry install

依赖管理:

# Add dependency
poetry add <package_name>

# Display all dependencies
poetry show --tree
运行代码
# Activate virtual env
poetry shell

# Run script within virtual env
poetry run python <script_name.py>

锁定文件:首次安装软件包时,Poetry 会解析 pyproject.toml 文件中列出的所有依赖项并下载最新版本的软件包。一旦 Poetry 完成安装,它将所有包和下载的确切版本写入一个 poetry.lock 文件,将项目锁定到这些特定版本。建议将锁定文件提交到您的项目存储库,以便所有从事该项目的人员都被锁定到相同版本的依赖项。要将依赖项更新到最新版本,请使用以下命令:

poetry update

构建/发布流程:

# 打包 (创建 `.tar.gz` 和 `.whl`)
poetry build

# 发布到 PyPI
poetry publish

pdm

pdm 是一个相对较新的包和依赖项管理器(于 2019 年开始),受到 Poetry 和 PyFlow 的启发。您会注意到,我在本文中并没有讨论 PyFlow。这是因为 PyFlow 不再活跃,这不再适合快速发展的打包工具领域。作为一种新工具,pdm 需要 Python 3.7 或更高版本。与其他工具的另一个区别是 pdm 允许用户选择构建后端。

pdm 是唯一在本地包上实现 PEP 582 的工具(除 PyFlow 之外) ,这是实现环境管理的替代方法。请注意,此 PEP 最近被拒绝了。

从维恩图中可以看出,pdm 位于 Poetry 旁边。这意味着它可以做除 Python 版本管理之外的所有事情:

1ed99d1514541e759bbc8dbde8dc74c9.jpeg
  • Python版本管理:❌

  • 包管理:✅

  • 环境管理:✅

  • 构建包:✅

  • 发布包:✅

pdm 的主要命令与 poetry 类似。然而,目前的命令还是比较少。例如,目前没有 pdm shell 或 pdm new

  • 该工具是否管理依赖关系?✅

  • 它是否解析/锁定依赖关系?✅

  • 是否有干净的构建/发布流程?✅

  • 它允许使用插件吗?✅

  • 它支持 PEP 660 吗?✅

  • 它支持 PEP 621 吗?✅

创建一个新项目

# 交互式创建 pyproject.toml 
pdm init

# 从 pyproject.toml 安装包
pdm install

依赖管理

# 添加依赖
pdm add <package_name>

# 展示所有依赖
pdm list --graph

运行代码

# 没有 shell 命令 

# 使用当前环境运行
pdm run python <script_name.py>

锁定文件:pdm 的锁定功能与 poetry 类似。首次安装软件包时,pdm 会解析 pyproject.toml 文件中列出的所有依赖项并下载最新版本的软件包。pdm 完成安装后,会将所有包及其下载的确切版本写入文件中 pdm.lock,从而将项目锁定到这些特定版本。建议将锁定文件提交到您的项目存储库,以便所有从事该项目的人员都被锁定到相同版本的依赖项。要将依赖项更新到最新版本,请使用以下命令:

pdm update

构建/发布流程:

# 打包 (创建 `.tar.gz` 和 `.whl`)
pdm build

# 发布到 PyPI
pdm publish

Hatch

Hatch(hatch.pypa.io/latest/):

  • Python版本管理:❌

  • 包管理:❌

  • 环境管理:✅

  • 构建包:✅

  • 发布包:✅

值得注意的是,Hatch 的作者承诺将很快添加锁定功能(github.com/pypa/hatch/…)。当您阅读本文时,请务必检查 Hatch 的最新版本,看看是否已实现此功能。

63e2179e188da92020818bfd765270c4.jpeg
  • 该工具是否管理依赖关系?❌

  • 它是否解析/锁定依赖关系?❌

  • 是否有干净的构建/发布流程?✅

  • 它允许使用插件吗?✅

  • 它支持 PEP 660(可编辑安装)吗?✅

  • 它支持 PEP 621(项目元数据)吗?✅

创建一个新项目

# 创建目录结构以及 pyproject.toml
hatch new <project_name>

# 交互式创建项目
hatch new -i <project_name>

# 初始化现有项目或者创建 pyproject.toml
hatch new --init

依赖管理

# 没有 add 命令,依赖需要手动添加到 pyproject.toml

# 展示依赖
hatch dep show table

运行代码

# 启用虚拟环境
hatch shell

# 在虚拟环境运行脚本
hatch run python <script_name.py>

构建/发布流程

#  打包 (创建 `.tar.gz` 和 `.whl`)
hatch build

# 发布到 PyPI
hatch publish

声明式环境管理:Hatch 的特别之处在于它允许您在文件中配置虚拟环境 pyproject.toml。此外,它还允许您专门为环境定义脚本。示例用例是代码格式化(hatch.pypa.io/1.1/config/…)。

Rye

Rye 最近由 Flask 框架的创建者 Armin Ronacher 开发(首次发布于 2023 年 5 月)。它受到编程语言 Rust 的打包工具 rustup 和 cargo 的强烈启发。Rye 是用 Rust 编写的,能够执行维恩图中的所有任务:

51ad10f6c1549b5386800428e17f616d.jpeg
  • Python版本管理:✅

  • 包管理:✅

  • 环境管理:✅

  • 构建包:✅

  • 发布包:✅

目前,Rye 没有插件接口。但是,由于定期发布新版本,因此将来可能会添加此内容。

  • 该工具是否管理依赖关系?✅

  • 它是否解析/锁定依赖关系?✅

  • 是否有干净的构建/发布流程?✅

  • 它允许使用插件吗?❌

  • 它支持 PEP 660(可编辑安装)吗?✅

  • 它支持 PEP 621(项目元数据)吗?✅

创建一个新项目:

# 创建目录结构以及 pyproject.toml
rye init <project_name>

# 指定一个 Python 本本
rye pin 3.10

依赖管理:

# 添加依赖,但是还没有安装
rye add <package_name>

# 同步虚拟环境, 锁定文件等等
# 在这个步骤安装依赖
rye sync

运行代码:

# 启动虚拟环境
rye shell

# 使用虚拟环境运行脚本
rye run python <script_name.py>

构建/发布流程:

# 打包 (创建 `.tar.gz` 和 `.whl`)
rye build

# 发布到 PyPI
rye publish

总结


FlitPoetrypdmHatchrye
该工具是否管理依赖关系❌✅✅❌✅
它是否解析/锁定依赖关系❌✅✅❌✅
是否有干净的构建/发布流程✅✅✅✅✅
它允许使用插件吗❌✅✅✅❌
它支持 PEP 660(可编辑安装)吗✅✅✅✅✅
它支持 PEP 621(项目元数据)吗✅❌✅✅✅

46cca45cd50d3381519239534e43de92.jpeg

最后推荐一下我们团队写的量化小册的内容,45篇内容!从Python安装,入门,数据分析,爬取股票基金的历史+实时数据,以及如何写一个简单量化策略,策略回测,如何看资金曲线统统都有介绍!非常超值!

欢迎订阅:原价299 早鸟价2杯咖啡钱,即可永久阅读。满400人又要涨价了,现在的价格非常非常低,只要2杯奶茶,就可以终身订阅+课程源码,还有永久陪伴群。48小时无理由退款,放心食用!

4a3ea93627798b8e2a74f25d2e10d486.png

往期推荐
量化: 如何用Python爬取创业板历史+实时股票数据!|实战股票分析篇利用Pandas 9招挖掘五粮液股价!|实战股票数据分析篇 Pandas滚动操作 |量化股票第一步,用Python画股票K线,双均线图,可视化你的股票数据!|如何用Python爬取全部800多只ETF基金数据!|如何用Python写一个双均线策略 |如何用Python开发一个多策略机器人!上篇!|Python量化系列-用布林策略买五粮液能赚多少钱?|只要4秒钟!用Python 获取上证指数34年的历史日线数据!

 
入门: 最全的零基础学Python的问题  | 零基础学了8个月的Python  | 实战项目 |学Python就是这条捷径

干货:爬取豆瓣短评,电影《后来的我们》 | 38年NBA最佳球员分析 |   从万众期待到口碑扑街!唐探3令人失望  | 笑看新倚天屠龙记 | 灯谜答题王 |用Python做个海量小姐姐素描图 |碟中谍这么火,我用机器学习做个迷你推荐系统电影

趣味:弹球游戏  | 九宫格  | 漂亮的花 | 两百行Python《天天酷跑》游戏!

AI: 会做诗的机器人 | 给图片上色 | 预测收入 | 碟中谍这么火,我用机器学习做个迷你推荐系统电影

小工具: Pdf转Word,轻松搞定表格和水印! | 一键把html网页保存为pdf!|  再见PDF提取收费! | 用90行代码打造最强PDF转换器,word、PPT、excel、markdown、html一键转换 | 制作一款钉钉低价机票提示器! |60行代码做了一个语音壁纸切换器天天看小姐姐!

Python环境配置:解决ModuleNotFoundError的完整指南 Python模块导入错误ModuleNotFoundError是开发中常见问题,通常由环境配置不当引发。Python的模块加载机制会按照sys.path定义的路径顺序查找模块,当所需模块不在这些路径中时就会报错。理解这一原理对解决依赖管理问题至关重要,特别是在使用虚拟环境或多Python版本时。通过检查pip版本、验证环境变量、重建虚拟环境等方法,可以系统性地解决这类问题。本文以tqdm进度条库为例,详细演示了从基础检查到高级调试的全套解决方案,涵盖Windows/Linux/macOS多平台场景,并提供了 阅读详情

相关推荐

Python环境搭建全攻略:从CPython安装到IDE配置与虚拟环境管理

Python解释器是执行Python代码的核心引擎,负责将源代码实时翻译为机器指令。其工作原理涉及词法分析、语法解析、字节码编译和虚拟机执行等多个环节。理解解释器的工作机制对于提升代码执行效率和排查运行时问题至关重要。在工程实践中,正确配置Python环境能确保第三方库的兼容性和开发工具的流畅运行,避免因版本冲突导致的依赖问题。常见的应用场景包括本地开发、远程服务器部署以及数据科学项目。本文聚焦于CPython解释器的安装部署,并针对pycharm2026创建ssh解释器和vscode配置python解释器

weixin_33850890的博客 423

python包管理器有哪些?

它可以安装Python包以及其他非Python软件包,并提供强大的依赖项解析和环境管理功能。pip(Python包索引):pip是Python的默认包管理器,广泛用于安装、更新和管理Python包。它可以从Python包索引(PyPI)中下载和安装第三方包,也可以管理虚拟环境中的包依赖关系。poetry:poetry是一个现代化的Python包管理工具,用于管理项目的依赖项和虚拟环境。它提供了一种声明性的方式来定义和安装项目的依赖项,并具有良好的依赖项解析和锁定机制。

weixin_44943389的博客 2640

Python:包管理工具

字符串切片 Str = "dashuaige" List = [1,2,3,4,"a","b","c",(5,6)] print(List[-1]) print(List[-5:-3]) #参数为负数时:索引为从左到右,第一个索引为-1,取值也是从右到左 print(List[1:7:2])#开始索引为1,结束索引为7,步长为2(即取第二个数) print(List[:])#无开始个结束参数.........

不怕猫的耗子A 1381

Python常用包管理工具以及详解

在Python的生态系统中,包管理工具起着至关重要的作用.它们简化了软件包的安装、更新、卸载和依赖管理.本文将介绍几种常见的Python包管理工具,并提供使用示例.

GLB_0627的博客 2779

HDLBits答案汇总

前言 该博客为本人做HDLBits习题时的心得记录总结,欢迎大家一起交流进步。 HDLBits网站链接 Verilog Language Basics Vectors Modules:Hierarchy Procedures More Verilog Features Circuits Combinational Logic Basic gates Multiplexers Arithmetic Circuits Karnaugh Map to Circuit Sequential Logic Latche

谦豫 9万+

当图像配准遇见边缘计算:低功耗设备的优化实践

本文探讨了在边缘计算环境下优化图像配准技术的实践方法,重点解决低功耗设备如树莓派和Jetson Nano上的算力瓶颈问题。通过算法轻量化、硬件加速和内存优化等策略,实现了毫秒级图像配准,适用于智能安防、移动医疗等实时性要求高的场景。

weixin_29054195的博客 388

python模块,库,包介绍、管理工具pip使用、import导包方法

(1)from 包/模块 import所有模块/方法(2)调用具体方法12345fromimportimporttime as ti调用的具体方法 sl(10)和sleep(10)效果一样#注意# 自定义你在程序中使用该方法的名称一个py文件就是一个模块,一个具有__init__.py的"文件夹"以及其他py文件的就是包。

tecoes的博客 2982

【Linux】Petalinux使用QSPI FLASH引导启动

1. 预分配Flash空间使用Flash引导Petalinux做的系统,也有进阶的做法。部分图片和经验来源于网络,若有侵权麻烦联系我删除,主要是做笔记的时候忘记写来源了,做完笔记很久才写博客。1. 预分配Flash空间根据生成的bit文件大小估算BOOT.BIN文件的大小,为Flash大概分配四个分区:boot、bootenv、kernel、bootscr,分别存放BOOT.BIN文件、u-boot的环境变量、内核文件(image.ub/zImage/uImage等)、启动脚本boot.scr。

Tesseract_9527的博客 3375

Python的5个包管理系统

Python的5个包管理系统

派森的博客 1766

HFSS入门学习笔记——微带一分四功分器的设计与仿真

功率分配器是将输入信号功率分成相等或不相等的几路功率输出的一种多端口无源微波网络,用于功率分配和功率合成。工程上常用的微带功分器有T型功分器和威尔金森功分器。经典的威尔金森功分器有几个缺点:①、多应用于低频段,高频段时,波长会与隔离电阻的尺寸相比拟,此时需要考虑电阻的分布参数效应;②、大功率应用时,隔离电阻的耗散功率要很大,因此隔离电阻的体积也会比较大。

weixin_42126696的博客 2万+

RTL优化与PPA分析:数字电路设计的关键技术

在数字集成电路设计中,RTL(寄存器传输级)优化是提升芯片性能、降低功耗和减小面积的核心技术。通过PPA(Power-Performance-Area)指标的平衡,工程师可以在不同时序约束下实现设计的最优化。本文基于Synopsys Design Compiler和开源工具Yosys的实验数据,展示了RTL优化在算术单元和控制逻辑中的显著效果,特别是在乘法器和除法器等复杂运算模块中。文章还探讨了AI辅助工具在RTL优化中的应用潜力,为数字电路设计提供了实用的技术参考和工程实践建议。

weixin_42186387的博客 619

Python 环境管理大比拼:pip、Conda、Pyenv、Rye、Virtualenv、PDM、Poetry 等工具

原文:https://alpopkes.com/posts/python/packaging_tools译文:https://juejin.cn/post/7325611798135767090译者:hashcon 作者在 EuroPython 2023 上的演讲:https://www.youtube.com/watch?v=3-drZY3u5vo 译者做的视频翻译版本:https://w...

fengdu78的博客 1236

【OS】AUTOSAR OS Alarm实现原理

AUTOSAR OS Alarm实现原理

qq_36056498的博客 1022

可能是最全的 Python 环境管理工具对比

除此之外,检查最新的 Python 版本所提供的功能,或者测试 Python 的预发布版本是否存在错误也是不错的选择。在工作中,您使用的是 Python 3.7,而您的个人项目应该使用最新的 Python 版本(当前为 3.11)。我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。这些是您必须安装和管理的项目的依赖项(例如,在发布新版本时进行升级)。

Trb201012的博客 2042

【异常】OpenClaw 飞书端 OpenClaw: access not configured. Pairing code: [] Ask the bot owner to approve with

摘要: OpenClaw飞书机器人交互中出现的access not configured报错,是因用户或组织未配置访问权限触发的拦截提示。报错包含组织单元ID和配对校验码,需管理员审批开通权限。普通用户需提交完整报错信息给管理员处理;管理员可通过执行标准化命令单次审批,或批量配置组织白名单优化权限管理。建议提前梳理权限范围、及时同步组织架构变更,并定期审计权限列表以确保安全合规。

奶爸的编程之路,也就一周冷个三天 371

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

【基础】Python包及环境管理工具大盘点:pip、pipx、poetry、conda、pipenv、Pixi、uv、venv、virtualenv、pyenv 、Mamba、Hatch、PDM等

Python各种工具比较:pip、pipx、poetry、conda、pipenv、Pixi、uv、venv、virtualenv、pyenv 、Mamba、Hatch、PDM等

正经教主是个热衷于正经学习分享的教主。 2536

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

【翻译】客观评价与对比Python所有的依赖环境管理工具

一个可以进行 Python 版本管理的工具,可以让你轻松安装 Python 版本并在它们之间切换。环境管理工具,允许您创建和管理(虚拟)环境。包管理工具能够下载和安装库及其依赖项。FlitPoetrypdmHatchrye该工具是否管理依赖关系❌✅✅❌✅它是否解析/锁定依赖关系❌✅✅❌✅是否有干净的构建/发布流程✅✅✅✅✅它允许使用插件吗❌✅✅✅❌它支持 PEP 660(可编辑安装)吗✅✅✅✅✅它支持 PEP 621(项目元数据)吗✅。

Trb201012的博客 1064

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Python包管理器终极指南:11个强大工具简化你的依赖管理

在Python开发中,高效的依赖管理是项目成功的关键。本文将为你介绍11个强大的Python包管理器工具,帮助你轻松应对各种依赖管理场景,从简单的包安装到复杂的项目环境配置,让你的开发流程更加顺畅。 ## 为什么需要专业的Python包管理器? Python作为一门广泛使用的编程语言,拥有丰富的第三方库和工具。随着项目规模的扩大,依赖管理变得越来越复杂。专业的包管理器能够帮助你解决版本冲突、环

gitblog_00228的博客 1152

python重要的运行相关变量以及依赖管理和项目构建工具

python重要的运行相关的变量,初学必看!!!能够理清项目结构,运行思路

少年何妨梦摘星,敢挽桑弓射玉衡。 他时若遂凌云志,敢笑黄巢不丈夫。 957

uv:用Rust重构Python开发工作流,解决环境管理与依赖安装痛点

在Python开发中,虚拟环境管理和依赖安装是构建可复现项目环境的基础环节。传统工具链如venv、pip和conda等组合使用,虽然功能完备,但存在工具碎片化、依赖解析慢、跨平台脚本不兼容等问题,导致开发体验存在诸多摩擦点。uv作为用Rust编写的极速Python包管理器,其技术价值在于将Python版本管理、虚拟环境创建、依赖解析锁定和包安装等环节整合为一条高度自动化、确定性强的流水线,从根本上提升了环境搭建的效率和一致性。在应用场景上,uv特别适合需要快速初始化项目、管理复杂依赖图以及确保团队协作环境一

weixin_33806300的博客 362

从Conda迁移到uv:Python环境管理的速度革命与现代化实践

Python环境管理是开发效率和部署稳定性的关键环节,其核心在于创建隔离的运行时环境以管理项目依赖。传统工具如Conda通过跨平台支持和预编译二进制包解决了环境一致性问题,但在依赖解析速度和现代标准集成方面面临挑战。随着Python打包生态的演进,基于PEP标准的工具链成为提升开发体验的重要方向。uv作为用Rust编写的极速Python包安装器,通过全局缓存和并行下载技术实现了依赖安装的数量级提速,同时原生支持虚拟环境管理和依赖锁定。对于追求极致效率和标准化工作流的开发者,从Conda迁移到uv能显著提升开

weixin_33985679的博客 400
上一篇: Google Reader被“代码屎山”杀死!
下一篇: 吵翻!导师确认录取后被学生「删除拉黑」,导学双方“互放鸽子”太伤了.....
菜鸟学Python
博客等级 码龄9年 8062粉丝 571原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值