教程: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
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/84709.shtml
英文地址,請注明出處:http://en.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地址進行訪問和惡意的網絡威脅,設置防火墻能夠幫助企業確保網絡的安全性,同時防火墻也會根據不同的功能來劃…