了解如何管理 Python 项目的不同环境,欢迎来到雲闪世界。
添加图片注释,不超过 140 字(可选)
介绍
创建数据科学项目非常简单。如今,有了众多资源,您只需选择开发工具并启动项目即可。
除了多个人工智能机器人可以帮助您完成大部分想要创建的工作之外,文档也很容易获得。
然而,随着项目变得越来越复杂和专业化,就需要开始将项目彼此隔离。有时,在项目 A 中运行良好的模块可能无法在项目 B 中一起运行。或者两个不同包中同名的方法可能会造成混淆。我的意思是,在非隔离环境中可能会发生很多事情。
那时我们就会发现需要开始隔离开发环境。因此,在这篇文章中,我们的想法是向您展示一种使用 Python 和 VS Code 创建隔离环境的快速简便的方法。
我们开始工作吧。
项目环境
如前所述,开发环境是在您的计算机内部创建的一个独立的“盒子”,用于仅安装该项目要使用的模块。
开发环境是在您的计算机内部创建的一个独立的“盒子”,以便更好地控制包。
假设我们将创建一个需要 Pandas、Scikit Learn 和 Streamlit 的分类项目。在这种情况下,我们可以只安装这些模块及其依赖项,而无需添加许多其他永远不会使用的软件包。然后可以将其与不会使用 Streamlit 的另一个项目分开。
现在让我们继续并开始编写一些代码。
使用 Pip
创建环境的最简单方法是使用 Python 的原生工具。为此,只需启动 VS Code 会话并打开一个新的 Powershell 终端(终端 > 新建终端)。
接下来,您可以为该项目创建一个新文件夹。
mkdir name_your_project
然后,更改文件夹以访问最近创建的目录。
cd name_your_project
此时,如果您愿意,可以使用 VS Code 打开新创建的文件夹。只需记住从新窗口重新打开终端即可。
在新文件夹中,是时候创建新环境了。使用以下命令。我将使用标准名称创建一个虚拟环境.venv。
python -m venv .venv
就这样。现在要激活它,您可以在 Powershell 中使用此命令。
.venv/Scripts/activate
这是已激活的虚拟环境
现在,当此环境激活时,您想要安装的任何内容都将被隔离,test_proj并且不会影响其他项目。让我们安装 Pandas 和 Streamlit,但不安装 Scipy。
pip install pandas
pip install streamlit
两个包都已安装,如果我运行一个快速脚本来检查,结果如下。
import pandas as pd
import streamlit as st
print(pd.__version__)
print(st.__version__)
[OUT]:
2.2.2
1.38.0
如果我检查 Scipy import scipy。
import scipy
[OUT]: ModuleNotFoundError: No module named 'scipy'
如果我们现在创建另一个环境并仅安装 Scipy,看看会发生什么。
python -m venv env2
env2/Scripts/activate
pip install scipy
import pandas as pd
[OUT]: ModuleNotFoundError: No module named 'pandas'
看看 Pandas 怎么没有安装env2。我们来看看 Scipy。
import scipy.stats as scs
print(scs.norm.rvs(loc=1, scale=3)
[OUT]:
0.5100109427428302
使用 PyEnv 和 Poetry
现在让我们看看使用 PyEnv 和 Poetry 做同样事情的另一种方法,这两个 Python 包适合此目的。这甚至比 Python 的原生工具更容易。
使用 PyEnv 是个好主意,因为它可以在同一台机器上管理不同版本的 Python。在处理多个项目时,一个始终可能出现的问题是,给定的 Python 版本与您正在使用的(或想要使用的)包不兼容。在这种情况下,您需要安装以前或更新版本的 Python。PyEnv 可以解决这个问题。
安装该软件包有点棘手,但按照本教程,您可以在 Windows 上快速完成安装。
现在要安装 Poetry,首先您必须安装pipx。请按照以下步骤操作。然后使用命令pipx install poetry完成 Poetry 的安装。
您可能还需要运行下一个命令来告诉您的 Windows Shell 您可以让 Poetry 管理虚拟环境。
poetry config virtualenvs.in-project true
完成初始安装步骤后,在 VSCode 中的 Powershell 中用 Poetry 创建一个新环境非常简单,如下所示:
poetry new test_proj
Created package test_proj in test_proj
使用该命令,Poetry 已经创建了虚拟环境文件夹、测试文件夹和一个pyproject.toml包含所有项目规范的漂亮文件。这太神奇了。看看 toml 文件。
pyproject.toml 文件
当我命令时poetry shell,Poetry 会创建.venv文件夹并激活它。
现在,要向项目添加新包,您可以使用:
poetry add pandas
This gets added to the toml file:
[tool.poetry.dependencies]
python = "^3.12"
pandas = "^2.2.2"
或者要删除它们,请使用:
poetry remove pandas
要为该项目使用不同版本的 Python,我们可以要求 PyEnv 使用 3.11.5。
pyenv local 3.11.5
Python 版本已更改
完成后,您可以exit在 shell 上写入以停用您的环境。
出发前
至此,我们完成了我们的小旅程,以进一步了解使用 VS Code、Pip 和 Poetry 在 Python 中进行环境管理。
这些知识有助于将我们项目的影响隔离在受控的“盒子”中,从而减轻依赖性问题或著名的“它在我的计算机上运行”的问题。
我认为Poetry 生成的toml文件也非常有用,它为您提供了项目内容的摘要。此外,Poetry 不会列出所有依赖项。它仅显示您实际请求安装的软件包,例如“Pandas”、“Scipy”等,而不是显示 numpy 和其他依赖项。
感谢关注雲闪世界。(Aws解决方案架构师vs开发人员&GCP解决方案架构师vs开发人员)