使用 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,一经查实,立即删除!

相关文章

git pull的merge和rebase模式

git pull 命令用于将远程仓库的更改拉取到本地仓库,并合并到当前分支中。git pull 默认使用合并(merge)模式,但也可以选择使用变基(rebase)模式。 Merge 模式(默认模式) git pull …

SpringBoot 获取 ApplicationContext

1. 概念 ApplicationContext是什么? 简单来说就是Spring中的容器,可以用来获取容器中的各种bean组件,注册监听事件,加载资源文件等功能 2. 获取ApplicationContext的方式 2.1. 创建工具类 通过此工具类,可以方便的…

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 时代,大模型产业落地的八大思考

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

vue3中标签的 ref 属性

在 Vue 3 中,ref 是一个强大的特性,用于处理组件和 DOM 元素的引用。它有两个主要的应用场景:一是在模板中引用 DOM 元素,二是在 Vue 组件中引用子组件实例。 1. 在模板中使用 ref 引用 DOM 元素 目的:直接访问和操作…

解决: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%;…

【linux】 date命令

date 命令在 Linux 和类 Unix 系统中用于显示和设置系统的日期和时间。这个命令非常灵活,允许用户以不同的格式查看日期和时间,也可以用来设置新的日期和时间(虽然这需要管理员权限,通常是通过 sudo 或以 root 用户身份执行&#…

Android Studio Menu制作

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

Rust:Result 和 Error

在 Rust 编程语言中,错误处理是一个核心部分,用于确保程序的健売性和可靠性。Rust 通过 Result 枚举和 Error 特质(trait)来处理错误。 Result 枚举 Result 是一个泛型枚举,用于表示一个操作可能成功或失败。它有两个…

NEXT.js 创建postgres数据库-关联github项目-连接数据库-在项目初始化数据库的数据

github创建项目仓库创建Vercel账号选择hobby连接github仓库install - deploy创建postgres数据库(等待deploy完成) Continue to DashboardStorage(头部nav哪里)create Postgresconnect连接完后,切换到.env.local&#x…

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…

杂牌鼠标侧键设置

X-Mouse Button Control修改侧键基本功能介绍-CSDN博客 下载链接 【X-Mouse汉化版】X-Mouse中文版 v2.19.2 绿色版(支持Win10)-开心电玩 (kxdw.com)

SQL:子查询

子查询是SQL中强大的功能之一,它允许在一个查询内部嵌套另一个查询,以便处理更复杂的逻辑或数据检索需求。子查询可以用在SELECT、FROM、WHERE、HAVING、IN、ANY、ALL等子句中,根据使用场景和目的的不同,子查询可以分为多种类型。…

Python 入门教程(3)基础知识 | 3.6、标准输入与输出

文章目录 一、标准输入与输出1、标准输入2、标准输出3、格式化输出3.1、使用%操作符的格式化3.2、使用str.format()方法3.3、使用f-strings(格式化字符串字面量) 前言: Python的标准输入与输出是编程中非常基础且重要的概念,它们允…

MATLAB图像处理

MATLAB图像处理 MATLAB,作为美国MathWorks公司出品的商业数学软件,以其强大的矩阵运算能力和丰富的函数库,在图像处理领域得到了广泛的应用。MATLAB不仅提供了基础的图像处理功能,还通过图像处理工具箱(Image Process…

一个基于Java SSM框架(Spring、SpringMVC、MyBatis)的沙县小吃点餐系统

下面是一个基于Java SSM框架(Spring、SpringMVC、MyBatis)的沙县小吃点餐系统的简单代码案例。这个系统通常包含用户管理、菜单浏览、点餐、订单管理等功能。 1. 实体类(POJO) 首先,我们定义一个简单的Product实体类…

git分支合并时忽略指定文件

分支合并忽略特定文件步骤 1.在项目根目录下cmd窗口运行以下命令 git config merge.ours.driver true2.在项目根目录下新建文件.gitattributes然后文件中写入需要忽略的文件名 mergeours, 一个文件占一行 Dockerfile mergeours /nginx/default.conf mergeours