教程:PyCharm 中搭建多级隔离的 Poetry 环境(从 Anaconda 到项目专属.venv)

核心思维:为什么需要 “多级隔离”?

在复杂项目中,环境冲突是最棘手的问题(比如系统 Python 版本不同、依赖包版本冲突)。通过 “Anaconda 虚拟环境 → 项目 Poetry 环境 → 工具级隔离” 的三层架构,实现:

  1. 基础层隔离:用 Anaconda 创建统一的 Python 基础环境(如python312),隔离系统 Python。

  2. 项目层隔离:基于 Anaconda 环境,用 Poetry 创建项目专属虚拟环境(.venv),隔离项目依赖。

步骤 1:搭建基础隔离层(Anaconda 虚拟环境)

目的:

创建一个统一的 Python 基础环境(如python312),作为后续项目的 “底座(Python基础解释器)”,避免系统 Python 的干扰。

操作:

  • 1、打开 Anaconda Prompt(或终端,确保已配置 Anaconda 环境变量)。
  • 2、创建 Anaconda 虚拟环境(命名为python312,指定 Python 3.12):
conda create -n python312 python=3.12
  • 3、激活该环境(后续操作都基于此基础环境):
conda activate python312
  • 4、(可选)安装系统级 Poetry供 PyCharm 初始化时调用,后续会被项目级覆盖):
pip install poetry

 

 

步骤 2:PyCharm 配置项目级 Poetry 环境(基于 Anaconda 的 python312)

目的:

在 Anaconda 基础环境上,为项目创建专属的 Poetry 虚拟环境(.venv,实现第二层隔离

操作:

  • 1、打开 PyCharm,进入项目目录(如 F:\PythonProjects\test4)。
  • 2、进入解释器配置
    • 路径:File → Settings → Project: test4 → Python Interpreter
    • 点击右上角 齿轮图标 → Add Interpreter → Add Local Interpreter
  • 3、选择 “Poetry 环境”,逐项配置:

 

配置项

操作细节

隔离意义

环境

选择 生成新的

不复用系统环境,新建项目专属Poetry 环境。

类型

选择 Poetry

用 Poetry 管理依赖(替代 pip,支持pyproject.toml)。

基础 Python

浏览选择 Anaconda 的 python312 环境的python.exe(如 D:\ProgramData\anaconda3\envs\python312\python.exe)

基于第一步的基础环境,保证 Python 版本统一。

Poetry 的路径

浏览选择 Anaconda 的 python312 环境的poetry.exe(如 D:\ProgramData\anaconda3\envs\python312\Scripts\poetry.exe)

临时借用系统级 Poetry 初始化项目环境,后续会被项目级 Poetry 替代。

创建项目内环境

勾选

虚拟环境保存在项目根目录的 .venv 中,实现项目级隔离(与基础环境解耦)。

  • 4、点击 “确定”,PyCharm 自动执行:
    • 调用 Anaconda 环境的 Poetry,在项目内创建 .venv 虚拟环境(第二层隔离完成)。
    • 激活 .venv,终端提示符显示 (test4-py3.12) ...(如 (test4-py3.12) F:\PythonProjects\test4>)。

 

步骤 3:终端强化工具级隔离(项目内安装 Poetry)

目的:

依赖管理工具(Poetry)也属于项目虚拟环境(.venv),实现第三层隔离,彻底避免系统级工具的干扰。

操作:

  • 1、验证当前环境
    • 终端提示符为 (test4-py3.12) ...,说明已激活项目的 .venv。
    • 检查 Python 路径(确保是项目 .venv 内的):

 

where python

 

# 预期输出(项目.venv优先): 
# F:\PythonProjects\test4\.venv\Scripts\python.exe 
# D:\ProgramData\anaconda3\envs\python312\python.exe 
…
    • 检查 Poetry 路径(此时仍为 Anaconda 环境的 Poetry):
where poetry

 

# 预期输出(系统级Poetry优先): 
# D:\ProgramData\anaconda3\envs\python312\Scripts\poetry.exe 
…
  • 2、在项目虚拟环境内安装 Poetry
pip install poetry 
    • 此操作会将 Poetry 安装到 项目 .venv\Scripts\ 目录,成为项目专属工具。

 

  • 3、验证工具隔离
where poetry

# 预期输出(项目.venv的Poetry优先): 
# F:\PythonProjects\test4\.venv\Scripts\poetry.exe 
# D:\ProgramData\anaconda3\envs\python312\Scripts\poetry.exe 
…

此时,项目的 Poetry 已完全隔离在 .venv,与系统级工具解耦。

 

步骤 4:用项目级 Poetry 管理依赖(实战)

核心命令:

  • 1、初始化依赖配置(生成pyproject.toml):
poetry init

交互填写项目名称、版本、依赖等,完成后生成 pyproject.toml(项目依赖的 “蓝图”)。

  • 2、添加依赖(自动写入pyproject.toml):
poetry add requests # 安装requests,支持版本约束(如^2.32.0)
  • 3、安装所有依赖(团队协作时,只需执行此命令即可复现环境):
poetry install
  • 4、运行脚本(确保在项目虚拟环境内执行):
poetry run python main.py

多级隔离的价值总结

隔离层级

载体

隔离对象

核心作用

第一层

Anaconda 虚拟环境python312

系统 Python

统一团队的基础 Python 版本,避免系统环境干扰。

第二层

项目.venv

项目依赖

隔离不同项目的依赖包,避免版本冲突(如 Project A 的 Django 3.0 和 Project B 的 Django 4.0)。

第三层

项目.venv内的 Poetry

依赖管理工具

确保poetry命令的行为完全由项目环境决定,与系统级 Poetry 的版本 / 配置无关。

通过这三层隔离,项目实现了 “从基础 Python 到依赖管理工具” 的全链路可控,完美解决 “环境不一致” 的痛点! 🛡️

如果团队成员都遵循此流程,只需共享pyproject.toml和poetry.lock,即可一键复现完全一致的开发环境。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.pswp.cn/bicheng/84709.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Rollup vs Webpack 深度对比:前端构建工具终极指南

前端工程领域始终面临一个根本选择:如何在模块化编码规范与工程化构建效率之间取得最佳平衡。Rollup与Webpack分别代表着两种不同维度的解决方案,本文将揭示它们的真实应用场景与核心差异。 一、核心差异全景图(附最新对比) 核心能…

Module Federation 和 Native Federation 的比较

前言 Module Federation 是 Webpack 5 引入的微前端架构方案,允许不同独立构建的应用在运行时动态共享模块。 Native Federation 是 Angular 官方基于 Module Federation 理念实现的专为 Angular 优化的微前端方案。 概念解析 Module Federation (模块联邦) Modul…

Easy Excel

Easy Excel 一、依赖引入二、基本使用1. 定义实体类(导入/导出共用)2. 写 Excel3. 读 Excel 三、常用注解说明(完整列表)四、进阶:自定义转换器(Converter) 其它自定义转换器没生效 Easy Excel在…

iOS 26 携众系统重磅更新,但“苹果智能”仍与国行无缘

美国西海岸的夏天,再次被苹果点燃。一年一度的全球开发者大会 WWDC25 如期而至,这不仅是开发者的盛宴,更是全球数亿苹果用户翘首以盼的科技春晚。今年,苹果依旧为我们带来了全家桶式的系统更新,包括 iOS 26、iPadOS 26…

AI高考志愿助手应用架构设计并上线实施运行

环境: AI高考志愿助手 问题描述: AI高考志愿助手应用架构设计并上线实施运行 业务需求:开发一个AI升学助手,功能是帮助用户模拟填报高考志愿等功能,数据是历年各专业的录取分数线表格。数据确认: 近3年约100多万条数据,原始数据是excel表格数据。解决方案: 一、项…

深入浅出掌握 Axios(持续更新)

在了解ajax和axios之前,我们先观察一下他们是什么英文的缩写 ajax 的名字为 asynchroanous JavaScript and XML 而axios的名称来源于英文单词“axis”与“I/O”的结合,并非直接缩写自某个特定短语。 先导知识 在本文我们简单的介绍一下ajax后着重讲解…

windows10下搭建nfs服务器

windows10下搭建nfs服务器 有参考这篇博客 Windows10搭建NFS服务 - fuzidage - 博客园 下载 NFS Server这个app 通过网盘分享的文件:nfs1268 (1).exe 链接: https://pan.baidu.com/s/1rE4h710Uh-13kWGXvjkZzw 提取码: mwa4 --来自百度网盘超级会员v5的分享 下载后…

npm符号链接

前言 最近在写一个快应用项目,demo中依赖了本地文件,package.json如下: 此时 node_modules 下出现了 mysdk,复制整个项目,但是copy的项目中的node_modules并未出现该文件,导致报错。 解决方案 观察 pa…

SQL 中 IDENTITY 列的特殊处理.

SQL 处理中,遇到提示: "消息 544,级别 16,状态 1,第 3 行 当 IDENTITY_INSERT 设置为 OFF 时,不能为表 BM 中的标识列插入显式值。" 即当 SQL Server 表中的 ​​标识列(Identity Column)​​ 插入显式值,但未启用 IDENTITY_INSERT 选项。由此报错,以下是详…

网络安全等级保护中关于SSL证书的整改如何处理?

SSL证书在网络安全等级保护(等保)体系中扮演着至关重要的角色,是实现多个等保核心要求(尤其是三级及以上)的关键技术手段之一。其重要性主要体现在以下几个方面: 满足“身份鉴别”要求(等保要求…

Docker容器化打造elasticsearch8.18.2集群企业实战(含kibana+证书认证)

主机信息 主机配置4Core8GB硬盘大于80GB 主机名IP地址角色10-0-17-12310.0.17.123es-node110-0-17-15810.0.17.158es-node2kibana-15610.0.17.156kibana 一、环境准备 1. 安装 Docker 这里就不介绍如何安装docker了,本文docker版本为20 2. 主机名与网络与内核配置…

JAVA语言的学习(Day_1)

写一个项目并运行: 第一步:新建一个.txt文本。右击点开用Notepad打开,并编辑。 编辑并保存后,可以在文件的查看中,显示出文件的类型(eg: .txt / .java)。将txt文本的.txt类型改为.java。 之后在下面的截…

JS 原型与原型链详解

JavaScript 原型与原型链详解 文章目录 JavaScript 原型与原型链详解一、基础概念类1.1 什么是原型?JavaScript 中如何访问一个对象的原型?1.2 构造函数、实例对象和原型对象之间的关系是什么?1.3 prototype 和 **proto** 的区别是什么&#…

DEVICENET转MODBUS TCP网关连接DeviceNet数字远程IO模块配置案例

设备与网络架构,主控设备:支持Modbus TCP协议的PLC(如西门子S7-1200)。网关设备:开疆智能Modbus TCP转DeviceNet网关KJ-DVCZ-MTCPS(需支持DeviceNet从站功能)。目标设备:DeviceNet数…

Ubuntu下使用PyTurboJPEG加速图像编解码

目录 一、概述 二、安装PyTurboJPEG 三、测试 一、概述 在计算机视觉领域,图像编解码是绕不开的基础环节。虽然 OpenCV 能解决大部分图像处理问题,但在性能要求严苛的场景下存在短板。本文将介绍基于 libjpeg-turbo 的高效 JPEG 编解码库 PyTurboJPE…

MCU、MPU、GPU、Soc、DSP、FPGA、CPLD……它们到底是什么?

MCU、MPU、GPU、Soc、DSP、FPGA、CPLD…… 这些简称在各大论坛、会议、发布会中屡见不鲜,看到简称,虽然也能说出大概; 但要问具体是什么?用在什么场景?又有什么区别……好像还是差点意思;本篇文章就记录一…

Django RBAC项目后端实战 - 03 DRF权限控制实现

项目背景 在上一篇文章中,我们完成了JWT认证系统的集成。本篇文章将实现基于Redis的RBAC权限控制系统,为系统提供细粒度的权限控制。 开发目标 实现基于Redis的权限缓存机制开发DRF权限控制类实现权限管理API配置权限白名单 前置配置 在开始开发权限…

[网页五子棋][用户模块]数据库设计和配置(MyBatis)、约定前后端交互接口、服务器开发

文章目录 数据库数据库设计配置 MyBatis1. Spring 配置2. 创建实体类3. 创建 Mapper 接口4. 使用 MyBatis 约定前后端交互接口登录接口注册接口获取用户信息 服务器开发loginregistergetUserInfo完整代码 数据库 数据库设计 完成注册登录以及用户分数管理 使用数据库来保存上…

Qt/C++学习系列之列表使用记录

Qt/C学习系列之列表使用记录 前言列表的初始化界面初始化设置名称获取简单设置 单元格存储总结 前言 列表的使用主要基于QTableWidget控件,同步使用QTableWidgetItem进行单元格的设置,最后可以使用QAxObject进行单元格的数据读出将数据进行存储。接下来…

防火墙通常可以分为哪些类型?

防火墙是目前保护网络安全的重要设备,能够通过监控、过滤和控制进出网络的数据流量,来保护内部网络不会受到未经授权的IP地址进行访问和恶意的网络威胁,设置防火墙能够帮助企业确保网络的安全性,同时防火墙也会根据不同的功能来划…