搭建Python虚拟环境(一):基础知识

在现代软件开发中,Python已经成为了最受欢迎的编程语言之一。它简洁的语法和强大的库支持使得Python非常适合快速开发。然而,随着项目的增长和依赖库的增加,管理不同项目的依赖关系可能会变得复杂。这时,Python虚拟环境的概念就显得尤为重要了。

虚拟环境允许开发者在隔离的环境中安装和管理不同的Python包,而不会影响到系统级别的Python环境。这意味着你可以在不同的项目中使用不同版本的库,而不必担心版本冲突。此外,虚拟环境也使得项目的部署和迁移变得更加容易,因为你可以确保每个项目都有其所需的确切依赖关系。

Python虚拟环境基础

虚拟环境是一个独立的Python运行环境,它允许用户在不同项目之间隔离Python库和脚本。每个虚拟环境都有自己的Python解释器、库和脚本,这意味着在一个虚拟环境中所做的任何更改都不会影响到其他虚拟环境,也不会影响到全局Python环境。

虚拟环境的主要作用是:

  • 依赖管理:确保项目的依赖库版本不会相互冲突。
  • 项目隔离:每个项目都在自己的环境中运行,避免了不同项目之间的干扰。
  • 部署简化:通过复制虚拟环境,可以轻松地在不同机器或服务器上部署项目。

第3章:虚拟环境的搭建工具

在Python开发中,有几种工具可以用来创建和管理虚拟环境。本章将介绍三个最常用的工具:venvvirtualenvconda。我们将探讨它们的特点、使用方法以及它们之间的差异。

3.1 venv

venv是Python 3.3及更高版本内置的虚拟环境管理工具。它轻量级、易于使用,是官方推荐的虚拟环境解决方案。

3.1.1 venv的介绍

  • venv允许用户在没有系统管理员权限的情况下创建虚拟环境。
  • 它通过创建一个包含所有必要的可执行文件的目录来工作,这些文件用来运行Python应用程序。

3.1.2 venv的优点

  • 无需额外安装:作为Python的一部分,无需单独安装。
  • 简单易用:只需简单的命令就能快速创建和管理虚拟环境。
  • 官方支持:得到Python官方的维护和更新。
3.2 virtualenv

virtualenv是一个第三方的虚拟环境管理工具,它支持Python 2和Python 3,提供了比venv更多的功能。

3.2.1 virtualenv的介绍

  • virtualenv可以创建一个包含自己版本的Python解释器的环境。
  • 它可以在系统的任何部分创建虚拟环境,而不仅仅是在用户目录下。

3.2.2 virtualenv与venv的区别

  • 更广泛的Python版本支持virtualenv可以用于更早版本的Python。
  • 更多的功能:例如,virtualenv支持创建包含特定Python解释器的环境。
3.3 conda

conda是一个开源的包管理器和虚拟环境管理器,它支持多种语言,不仅仅是Python。

3.3.1 conda的介绍

  • conda可以管理包和环境,它能够在不同操作系统上工作。
  • 它专为数据科学和机器学习项目设计,支持复杂的依赖和环境要求。

3.3.2 conda与venv/virtualenv的比较

  • 跨语言支持conda不仅支持Python,还支持R、Ruby、Lua等语言。
  • 包管理conda提供了一个丰富的包管理功能,可以方便地安装、更新和删除包。
  • 环境管理conda允许用户创建隔离的环境,以便于管理不同项目的依赖。

3.4 pipenv

pipenv是一个Python开发工作流的工具,它将pipvirtualenv的功能结合在一起,旨在提供一种更简单的方式来创建和管理虚拟环境。

3.4.1 pipenv的介绍

pipenv通过使用PipfilePipfile.lock文件来管理依赖关系,这使得依赖关系更加明确和可复制。它自动创建虚拟环境,并在安装包时自动更新这些文件。

3.4.2 pipenv的优点
  • 依赖管理:使用PipfilePipfile.lock来锁定依赖项的版本,确保环境的一致性。
  • 环境管理:自动创建和管理虚拟环境,无需手动激活或退出。
  • 简化安装:通过pipenv install命令,可以一次性安装所有依赖项。

3.5 pyenv

pyenv是一个用于管理多个Python版本的工具,它允许开发者在同一台机器上安装和切换不同版本的Python。

3.5.1 pyenv的介绍

pyenv通过在系统上安装多个Python版本,并允许用户在这些版本之间切换,来管理Python环境。它还支持安装和使用第三方的Python解释器。

3.5.2 pyenv的优点
  • 版本管理:可以在同一台机器上安装多个Python版本,方便开发者测试和开发。
  • 插件系统pyenv拥有丰富的插件系统,可以扩展其功能,例如自动安装Python依赖的依赖项。
  • 兼容性:支持多种操作系统,包括Unix-like系统和Windows。

在选择合适的虚拟环境工具时,开发者应该考虑他们的具体需求。例如,如果你正在进行数据科学或机器学习项目,可能会倾向于使用conda。而对于需要轻量级和官方支持的项目,venv可能是更好的选择。如果你需要一个能够同时管理依赖和Python版本的工具,pyenv可能是更好的选择。而如果你更关注依赖管理和虚拟环境的创建,pipenv可能更适合你的需求。

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

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

相关文章

vue生命周期及组件讲解(如何导入引用外部vue文件,以及注册全局变量,自定义标签效果)

生命周期钩子的理解与应用 函数说明onBeforeMount( )组件挂载前onMounted( )组件挂载后onBeforeUpdate( )组件更新前onUpdated( )组件中任意的DOM元素更新后onBeforeUnmount( )组件实例被销毁前onUnmounted( )组件实例被销毁后 生命周期在 各类应用以及网站中使用非常广泛&…

k8s+springboot+redis部署配置连接

1 springboot 配置k8s中的redis服务名 #tomcat访问端口 # 应用名称 spring.application.namedemo # 应用服务Web访问端口 server.port8089 server.envtest #缓存关闭 spring.thymeleaf.cachefalse #可选配置 management.endpoints.enabled-by-defaulttrue management.endpoint…

springboot与flowable(6):任务分配(监听器)

一、创建流程模型 制作如下流程 给审批用户1一个值表达式。 二、给用户审批2添加监听器 创建一个监听器类 package org.example.flowabledemo2.listener;import org.flowable.engine.delegate.TaskListener; import org.flowable.task.service.delegate.DelegateTask;/*** 自定…

大模型单次预测下一个token的过程分析,帮助理解model.generate

大模型单次预测下一个token的过程分析,帮助理解model.generate from transformers import AutoModelForCausalLM, AutoTokenizer, AutoModel from transformers.modeling_outputs import CausalLMOutputWithPast device "cuda" # the device to load the…

【PLG洞察】|向Figma学习如何打造标杆客户和实施分销策略

Figma是一款功能强大的在线协同设计工具,它主要被用于界面设计、原型设计和用户体验设计。作为国外知名的saas企业,对标国内的saas蓝海,它的增长实在惊人!据称,Figma2020年的收入已达$75M, 2021年6月,美国的…

springSecurity学习笔记(一)

简介 Spring Security是一个Java框架,用于保护应用程序的安全性。它提供了一套全面的安全解决方案,包括身份验证、授权、防止攻击等功能。Spring Security基于过滤器链的概念,可以轻松地集成到任何基于Spring的应用程序中。它支持多种身份验…

没有可用软件包 docker-compose。

在 CentOS 上安装 docker-compose 时,如果遇到“没有可用软件包 docker-compose”的问题,可以通过以下步骤手动安装 docker-compose。 下载 docker-compose 二进制文件 首先,下载最新版本的 docker-compose 二进制文件。你可以从 GitHub Releases 页面找到最新版本的下载链接…

海洋CMS /js/player/dmplayer/dmku/ SQL注入漏洞复现(CVE-2024-29275)

0x01 产品简介 海洋CMS是一套专为不同需求的站长而设计的内容管理系统,灵活、方便、人性化设计、简单易用是最大的特色,可快速建立一个海量内容的专业网站。海洋CMS基于PHPMySql技术开发,完全开源免费 、无任何加密代码。 0x02 漏洞概述 海…

Jsch上传本地目录文件到服务器

文章目录 1.Jsch简介1.1 什么是Jsch1.2 Jsch使用步骤和简单示例 2.技术关键点3.Jsch实战3.1 maven依赖3.2 功能实现3.3 效果3.4 封装工具类 4.总结 摘要: 在一些框架开发工作中,需要为项目使用说明文档,来指导用户如何正确使用框架。比如通过markdown编写…

Python 模块之 Pywin32 模块入门

文章目录 版本1. Windows API 是什么2. Pywin32 模块是什么2.1 Pywin32 中的常用模块2.1.1 win32api2.1.2 win32con2.1.3 win32gui2.1.4 win32file2.1.5 win32registry 实现一个循环模拟点击功能 其它总结个人简介 版本 Python 3.x 1. Windows API 是什么 Windows API&#…

一文搞懂阻塞赋值和非阻塞赋值

目录 2.非阻塞赋值举例3.阻塞赋值举例4.总结 微信公众号获取更多FPGA相关源码: # 1.阻塞赋值和非阻塞赋值的区别: (1)阻塞赋值"",必须是阻塞赋值完成后,才进行下一条语句的执行;赋值一旦完成,等号…

MyBatis与MySql关系阐述

MyBatis是一个持久层(persistence layer)框架,用于简化Java应用程序与关系数据库(如MySQL)的交互。它通过消除大量冗余的JDBC代码,并提供了一个简单且易于使用的API,使得开发者可以更高效地进行…

pytest+requests+allure自动化测试接入Jenkins学习

🍅 视频学习:文末有免费的配套视频可观看 🍅 点击文末小卡片 ,免费获取软件测试全套资料,资料在手,涨薪更快 最近在这整理知识,发现在pytest的知识文档缺少系统性,这里整理一下&…

black-box setting黑盒环境

“Black-box setting” 是一个术语,通常用于描述在机器学习、计算机安全和其他技术领域中的一种情况或设置。 定义和解释: 在技术和研究上,“black-box setting” 指的是对一个系统或模型的操作者来说,该系统或模型的内部工作机…

陕西移动联合中兴通讯,赋能5G RedCap智慧工厂建设

前不久,陕西移动联合中兴通讯、高新兴等产业伙伴在中兴通讯西安智能终端生产基地顺利完成5G RedCap在智慧工厂的应用实践。本次实践证明了5G RedCap在智慧工厂场景下的应用可行性,为RedCap在工业智能制造行业的应用打下基础。   5G RedCap技术是5G-A实现…

【cocos creator 3.x】 修改builtin-unlit 加了一个类似流光显示的mask参数

效果见图: shader 代码修改如下, 主要看 USE_MASK_UVY 关键字部分修改: // Copyright (c) 2017-2020 Xiamen Yaji Software Co., Ltd. CCEffect %{techniques:- name: opaquepasses:- vert: unlit-vs:vertfrag: unlit-fs:fragproperties: &a…

在Android Studio中将某个文件移出Git版本管理

最新在整理代码时发现,local.properties文件开头有这么一段注释: ## This file must *NOT* be checked into Version Control Systems, # as it contains information specific to your local configuration. 大意是这个文件不要加入到版本管理中。 之…

Linux-centos7 nvm使用

NVM下载使用 文件夹创建拉取nvm包在~/.bashrc的末尾,添加如下语句验证nvm是否安装成功 文件夹创建 mkdir /root/home/software/拉取nvm包 cd /root/home/software/ wget https://github.com/nvm-sh/nvm/archive/refs/tags/v0.38.0.tar.gz tar xvzf v0.38.0.tar.g…

MyBatis-Plus整合达梦数据库

文章目录 1. 环境准备2. 创建Spring Boot项目3. 引入依赖4. 配置数据源5. 配置MyBatis-Plus6. 创建实体类7. 创建Mapper接口8. 创建Service类9. 创建Controller类10. 创建Mapper XML文件11. 测试12. 进一步优化12.1 配置分页插件12.2 配置乐观锁插件13. 总结🎉欢迎来到Java学…

【Linux】常见指令的使用

文章目录 which指令stat 指令wc指令echo指令tree 指令whoami指令clear指令alias指令ls指令pwd指令cd 指令touch指令mkdir指令(重要)rmdir指令 && rm 指令(重要)man指令(重要)cp指令(重要…