使用 VSCode 在 Python 中创建项目环境

了解如何管理 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 scipyimport 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 pandasThis 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开发人员)

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

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

相关文章

JDBC 编程

目录 JDBC 是什么 JDBC 的工作原理 JDBC 的使用 引入驱动 使用 常用接口和类 Connection Statement ResultSet 使用总结 JDBC 是什么 JDBC(Java Database Connectivity):Java数据库连接,是一种用于执行 SQL 语句的Java…

git学习【持续更新中。。。】

git学习【持续更新中。。。】 文章目录 git学习【持续更新中。。。】一、Git基本操作1.创建本地仓库2.配置本地仓库1.局部配置2.全局配置 3.认识工作区、暂存区、版本库4.添加文件5.修改文件6.版本回退7.撤销修改8.删除文件 二、Git分支管理1.理解分支2.创建、切换、合并分支3.…

AI 时代,大模型产业落地的八大思考

引言 在人工智能领域,大模型技术正逐渐成为推动行业进步的关键力量。随着技术的发展,大模型不仅在学术界引起了广泛的关注,也在产业界展现出巨大的应用潜力。然而,如何将这些强大的模型有效地应用到实际产业中,仍然是…

解决:Vue 中 debugger 不生效

目录 1,问题2,解决2.1,修改 webpack 配置2.2,修改浏览器设置 1,问题 在 Vue 项目中,可以使用 debugger 在浏览器中开启调试。但有时却不生效。 2,解决 2.1,修改 webpack 配置 通…

MySQL权限控制(DCL)

我的mysql里面的一些数据库和一些表 基本语法 1.查询权限 show grants for 用户名主机名;例子1:查询权限 show grants for heima%;2.授予权限 grant 权限列表 on 数据库名.表名 to 用户名主机名;例子2: 授予权限 grant all on itcast.* to heima%;…

Android Studio Menu制作

文章目录 一、创建菜单在Activity上新建onCreateOptionsMenu新建menu目录及资源文件新建Menu一级菜单在Activity上加载Menu测试效果 二、菜单点击事件 一、创建菜单 在Activity上新建onCreateOptionsMenu Overridepublic boolean onCreateOptionsMenu(Menu menu) {return supe…

Pytest配置文件pytest.ini如何编写生成日志文件?

1、新建pytest.ini文件 [pytest] log_clitrue log_leveLNOTSET log_format %(asctime)s %(levelname)s %(message)s %(filename)s %(funcName)s %(lineno)d log_date_format %Y-%m-%d %H:%M:%Slog_file ./logdata/log.log log_file_level info log_file_format %(asctime…

深入探究HTTP网络协议栈:互联网通信的基石

在我们日常使用互联网的过程中,HTTP(HyperText Transfer Protocol,超文本传输协议)扮演着至关重要的角色。无论是浏览网页、下载文件,还是进行在线购物,HTTP协议都在背后默默地支持着这些操作。今天&#x…

数据结构与算法——顺序表期末复习五大经典题型

目录 一:顺序表-移除元素 二:顺序表-删除有序数组中的重复项 三:顺序表-合并两个有序数组 四:顺序表-旋转数组 五:顺序表-数组形式的整数加法 一:顺序表-移除元素 题型链接:27. 移除元素 -…

玖逸云黑系统源码 v1.3.0全解无后门 +搭建教程

功能带有卡密生成和添加黑名单等,反正功能也不是很多具体的自己看程序截图即可。 搭建教程 完成 1.我们先添加一个站点 2.PHP选择7.3 3.上传源码解压 4.导入数据库 5.配置数据库信息config.php 源码下载:https://download.csdn.net/download/m0_6…

10年408考研真题-数据结构

23.[2010统考真题]若元素 a,b,c,d,e,f 依次进栈,允许进栈、退栈操作交替进行,但不允许连续3次进行退栈操作,不可能得到的出栈序列是(D)。 A.dcebfa B.cbdaef C.bcaefd D.afedcb 解析:直接看D选项&#xff0c…

VUE实现刻度尺进度条

一、如下图所示效果&#xff1a; 运行后入下图所示效果&#xff1a; 实现原理是用div画图并动态改变进度&#xff0c; 二、div源码 <div style"width: 100%;"><div class"sdg_title" style"height: 35px;"><!--对话组[{{ dialo…

用Python画一个五星红旗

#codingutf-8 import turtle import mathdef draw_polygon(aTurtle, size50, n3): 绘制正多边形args:aTurtle: turtle对象实例size: int类型&#xff0c;正多边形的边长n: int类型&#xff0c;是几边形 for i in range(n):aTurtle.forward(size)aTurtle.left(360.0/n)de…

Linux--守护进程与会话

进程组 概念 进程组就是一个或多个进程的集合。 一个进程组可以包含多个进程。 下面我们通过一句简单的命令行来展示&#xff1a; 为什么会有进程组&#xff1f; 批量操作&#xff1a;进程组允许将多个进程组织在一起&#xff0c;形成一个逻辑上的整体。当需要对多个进程…

下载Kafka 3.0.0教程

1、Kafka 3.0.0下载地址 Apache Kafka 2、往下拉&#xff0c;查找3.0.0版本点击下载

【C++前后缀分解 降维】2906. 构造乘积矩阵|2074

前后缀分解 C前后缀分解 LeetCode2906. 构造乘积矩阵 给你一个下标从 0 开始、大小为 n * m 的二维整数矩阵 grid &#xff0c;定义一个下标从 0 开始、大小为 n * m 的的二维矩阵 p。如果满足以下条件&#xff0c;则称 p 为 grid 的 乘积矩阵 &#xff1a; 对于每个元素 p[…

数据结构之‘栈’

文章目录 1.简介2. 栈的初始化和销毁3. 进栈和出栈3.1 进栈3.2 出栈3.3 栈的打印 1.简介 一种特殊的线性表&#xff0c;其只允许在固定的一端进行插入和删除元素操作。进行&#xff08;数据插入和删除操作&#xff09;的一端称为栈顶&#xff0c;另一端称为栈底。压栈&#xf…

C语言之预处理详解(完结撒花)

目录 前言 一、预定义符号 二、#define 定义常量 三、#define定义宏 四、宏与函数的对比 五、#和## 运算符 六、命名约定 七、#undef 八、条件编译 九、头文件的包含 总结 前言 本文为我的C语言系列的最后一篇文章&#xff0c;主要讲述了#define定义和宏、#和##运算符、各种条件…

W25QXX系列Flash存储器模块驱动代码

目录 W25QXX简介 硬件电路 W25Q128框图 Flash操作注意事项 驱动代码 W25QXX.h W25QXX.c W25QXX简介 W25Qxx系列是一种低成本、小型化、使用简单的非易失性存储器&#xff0c;常应用于数据存储、字库存储、固件程序存储等场景 存储介质&#xff1a;Nor Flash&#xff0…

算法入门-贪心1

第八部分&#xff1a;贪心 409.最长回文串&#xff08;简单&#xff09; 给定一个包含大写字母和小写字母的字符串 s &#xff0c;返回通过这些字母构造成的最长的回文串 的长度。 在构造过程中&#xff0c;请注意 区分大小写 。比如 "Aa" 不能当做一个回文字符串…