3分钟上手PDM虚拟环境:从混乱到秩序的Python环境管理革命

3分钟上手PDM虚拟环境:从混乱到秩序的Python环境管理革命

【免费下载链接】pdm A modern Python package and dependency manager supporting the latest PEP standards 【免费下载链接】pdm 项目地址: https://gitcode.com/GitHub_Trending/pd/pdm

你是否还在为Python项目的环境配置而头疼?不同项目需要不同版本的依赖包,手动管理虚拟环境繁琐易错,切换环境时更是手忙脚乱?本文将带你彻底告别这些烦恼,通过PDM(Python包和依赖管理器)的虚拟环境功能,轻松实现项目环境的隔离与高效管理。读完本文,你将掌握PDM虚拟环境的创建、使用、管理全流程,让Python开发环境从此井然有序。

PDM虚拟环境简介

PDM(Python包和依赖管理器)是一个现代的Python包和依赖管理器,支持最新的PEP标准。与传统的虚拟环境管理工具相比,PDM提供了更简洁、更强大的虚拟环境管理功能,能够自动创建、检测和管理虚拟环境,让开发者专注于代码开发而非环境配置。

PDM默认使用虚拟环境模式,这被认为比PEP 582更成熟,在Python生态系统和IDE中也有更好的支持。你可以通过配置python.use_venv来切换模式,具体可参考官方文档:docs/usage/venv.md

快速创建虚拟环境

自动创建虚拟环境

当你在一个新的PDM管理项目中首次运行pdm install命令时,如果还没有确定Python解释器,PDM会自动在项目根目录下创建一个名为.venv的虚拟环境,并将依赖安装到其中。在pdm init的交互会话中,PDM也会询问是否为你创建虚拟环境。

PDM支持三种虚拟环境后端:virtualenv(默认)、venvconda。你可以通过以下命令更改后端:

pdm config venv.backend [virtualenv|venv|conda]

手动创建虚拟环境

你可以使用pdm venv create命令手动创建多个不同Python版本的虚拟环境。例如:

# 创建基于Python 3.9的虚拟环境
pdm venv create 3.9
# 创建指定名称的虚拟环境
pdm venv create --name for-test 3.9
# 使用venv后端创建Python 3.10的虚拟环境
pdm venv create --with venv 3.10

虚拟环境的位置与管理

虚拟环境的存储位置

如果没有指定--name,PDM会在项目根目录下创建.venv目录来存储虚拟环境。否则,虚拟环境会存储在venv.location配置指定的位置,命名格式为<project_name>-<path_hash>-<name_or_python_version>,以避免名称冲突。你可以通过pdm config venv.in_project false禁用项目内虚拟环境的创建,这样所有虚拟环境都会创建在venv.location下。

列出所有虚拟环境

使用pdm venv list命令可以列出当前项目创建的所有虚拟环境:

$ pdm venv list
Virtualenvs created with this project:

-  3.8.6: C:\Users\Frost Ming\AppData\Local\pdm\pdm\venvs\test-project-8Sgn_62n-3.8.6
-  for-test: C:\Users\Frost Ming\AppData\Local\pdm\pdm\venvs\test-project-8Sgn_62n-for-test
-  3.9.1: C:\Users\Frost Ming\AppData\Local\pdm\pdm\venvs\test-project-8Sgn_62n-3.9.1

查看虚拟环境路径和Python解释器

你可以使用以下命令查看指定虚拟环境的路径和Python解释器:

pdm venv --path for-test
pdm venv --python for-test

删除虚拟环境

使用pdm venv remove命令可以删除指定的虚拟环境:

$ pdm venv remove for-test
Virtualenvs created with this project:
Will remove: C:\Users\Frost Ming\AppData\Local\pdm\pdm\venvs\test-project-8Sgn_62n-for-test, continue? [y/N]:y
Removed C:\Users\Frost Ming\AppData\Local\pdm\pdm\venvs\test-project-8Sgn_62n-for-test

激活和使用虚拟环境

激活虚拟环境

PDM不像pipenvpoetry那样生成子shell,而是将激活命令打印到控制台,你可以将输出传递给eval来激活虚拟环境。

=== "bash/csh/zsh" bash $ eval $(pdm venv activate for-test) (test-project-for-test) $ # 虚拟环境已进入

=== "Fish" bash $ eval (pdm venv activate for-test)

=== "Powershell" ps1 PS1> Invoke-Expression (pdm venv activate for-test)

如果项目解释器是虚拟环境的Python,你可以省略activate后面的名称参数。

自定义虚拟环境提示符

默认情况下,激活虚拟环境后,提示符会显示为{project_name}-{python_version}。你可以通过venv.prompt配置或PDM_VENV_PROMPT环境变量来自定义提示符格式,支持project_namepython_version两个变量。例如:

$ PDM_VENV_PROMPT='{project_name}-py{python_version}' pdm venv create --name test-prompt
$ eval $(pdm venv activate test-prompt)
(test-project-py3.10) $

在不激活虚拟环境的情况下运行命令

你可以使用--venv标志在指定的虚拟环境中运行命令,而无需先激活它:

# 运行脚本
pdm run --venv test test
# 安装依赖
pdm sync --venv test
# 列出已安装的包
pdm list --venv test

更多支持--venv标志或PDM_IN_VENV环境变量的命令,请参考CLI参考文档:docs/reference/cli.md

切换项目使用的虚拟环境

你可以使用pdm use --venv命令切换项目使用的虚拟环境:

# 切换到名为test的虚拟环境
$ pdm use --venv test
# 切换到项目内的.venv虚拟环境
$ pdm use --venv in-project

虚拟环境管理高级技巧

为虚拟环境添加shell命令支持

虽然PDM没有提供shell命令,但你可以通过添加shell函数来实现类似功能。以下是BASH/ZSH和Fish的示例函数:

BASH/ZSH函数(添加到~/.bashrc):

pdm() {
  local command=$1

  if [[ "$command" == "shell" ]]; then
      eval $(pdm venv activate)
  else
      command pdm $@
  fi
}

Fish函数(添加到~/fish/config.fish~/.config/fish/config.fish):

function pdm
    set cmd $argv[1]

    if test "$cmd" = "shell"
        eval (pdm venv activate)
    else
        command pdm $argv
    end
end

添加后,你就可以使用pdm shell命令来激活虚拟环境,使用deactivate命令退出虚拟环境。

在虚拟环境中包含pip

默认情况下,PDM不会在虚拟环境中包含pip。如果你需要,可以通过以下方式安装pip

# 在虚拟环境中安装pip
pdm run python -m ensurepip
# 安装任意依赖(注意:这些依赖不会与锁文件依赖冲突检查!)
pdm run python -m pip install coverage

你也可以在创建虚拟环境时使用--with-pip选项:

pdm venv create --with-pip 3.9

如果你想永久配置PDM在虚拟环境中包含pip,可以使用venv.with_pip配置,具体参考配置参考文档:docs/reference/configuration.md

总结

通过本文的介绍,你已经掌握了PDM虚拟环境的创建、管理、使用等核心技能。PDM的虚拟环境功能为Python项目提供了简洁高效的环境隔离方案,让你彻底告别环境配置的烦恼。无论是自动创建还是手动管理,PDM都能满足你的需求,让你专注于代码开发。

现在,就开始使用PDM来管理你的Python项目环境吧!更多详细信息,请参考PDM官方文档:docs/usage/venv.md。如果你觉得本文对你有帮助,欢迎点赞、收藏、关注,后续我们将带来更多PDM使用技巧和最佳实践。

【免费下载链接】pdm A modern Python package and dependency manager supporting the latest PEP standards 【免费下载链接】pdm 项目地址: https://gitcode.com/GitHub_Trending/pd/pdm

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值