轻松搞定在Python中构建虚拟环境

简介: 本教程教你如何使用业界公认的最佳实践,创建一个完全工作的Python开发环境。虚拟环境通过隔离依赖项,避免项目间的冲突,并允许你轻松管理包版本。我们将使用Python 3的内置`venv`模块来创建和激活虚拟环境,确保不同项目能独立运行,不会相互干扰。此外,还将介绍如何检查Python版本、激活和停用虚拟环境,以及使用`requirements.txt`文件共享依赖项。通过本教程,你将学会:- 创建和管理虚拟环境- 避免依赖性冲突- 部署Python应用到服务器适合新手和希望提升开发环境管理能力的开发者。

大多数 Python 新手不知道如何建立一个遵循专业程序员使用的最新标准的开发环境。本教程将教你如何使用业界公认的最佳实践,正确地创建一个完全工作的 Python 开发环境。

虚拟环境

虚拟环境通过创建隔离的环境来帮助我们解决项目的依赖性冲突。这些 "隔离环境 "包含了Python程序员在开发他们的项目时可能需要的所有好东西。

虚拟环境包括一个全新的 Python 二进制文件的副本,以及整个 Python 标准库的独立副本。这就是为什么它可以自己工作。

使用虚拟环境给我们带来以下好处。

  • 我们能够完整地维护我们的本地机器包
  • 我们可以通过一个requirements.txt 文件与其他人共享依赖项
  • 我们可以在专门的服务器上部署Python应用(PythonAnyWhere、Heroku等等)。

对虚拟环境的需求

我在我的项目中使用了许多库。其中有三个网络应用程序开发框架,还有一些我想在将来探索的其他库。这可以作为主要的论据,Python中的严肃项目依赖于其他开发者编写的其他软件包。

如果你是一个Django开发者,我相信你会使用Django rest框架来创建强大的rest API,使用Django Debug Toolbar来收集关于当前请求/响应的各种调试信息,使用Celery来处理实时操作,还有调度,等等。

例如,我的一些项目非常依赖requests 包,而我目前正在开发的一个Django网络应用程序就依赖于2.3.0版本。根据官方文档,在撰写本文时,这个包的最新版本是3.2版。

假设我继续前进,并在我的Ubuntu机器上安装最新版本的库,因为我需要它来做另一个项目。一切似乎都很正常,直到我试图使用我的老项目,该项目在2.3.0版本下运行良好。突然间,一切都坏了。

发生了什么?也许最新版本的Django的API在2.3.0版本后发生了变化?在这一点上,原因并不重要,因为我的老项目已经坏了,不再工作了。

两个项目之间产生了冲突。它们利用了同一个库,但它们需要不同的版本。

不同的软件包可以解决这个问题。让我们看看一些突出的例子。

开始之前

在本教程中,我们将使用Python 3,所以让我们从检查你的Python安装开始。

要做到这一点,打开一个终端--Windows下的cmd/PowerShell--并输入以下命令。

bash

代码解读

复制代码

python --version

Python 3.9.5 # My result

注意:大多数macOS和Linux系统都安装了Python。如果你使用的是Windows,你可以查看Python安装指南

如果你没有得到一个形式为Python 3.x 的结果,有两个选择。

  • 如果这个命令返回的是Python 2.x 版本,你需要使用python3 和本教程。
  • 如果你得到一个Unknown command 的错误,试着运行python3 ,如果你得到另一个错误,请遵循 Python 安装指南

你可以通过检查python3 二进制文件的版本来证明它的存在。

bash

代码解读

复制代码

python3 --version

Python 3.9.5

注意:如果上面的命令有效,你需要运行python3 而不是python

现在你知道哪个Python命令在你的机器上运行,让我们进入虚拟环境。

内置的venv 模块

让我们使用内置的 Pythonvenv 模块来创建你的第一个虚拟环境。

注意:要使用这个模块,你需要在你的系统中安装 Python 3.3 或更高版本。

要使用venv 创建一个 Python 虚拟环境,键入以下命令。

bash

代码解读

复制代码

python -m venv virt1

注意:-m 标志意味着Python正在以脚本的形式运行内置的venv 模块。

这将创建一个名字为virt1 的虚拟环境,但这只是一个参数。你可以用你想要的任何名字创建虚拟环境。

安装在virt1 目录中的所有东西都不会影响全局包或全系统的安装,从而避免了依赖性冲突。

激活虚拟环境

至关重要的是,每次我们想使用创建的虚拟环境时,都需要用以下命令来激活它。

bash

代码解读

复制代码

source virt1/bin/activate

这并不是在每个系统中都适用,所以你可以查看下面的表格来清楚地了解使用哪条命令。

平台 外壳 激活虚拟环境的命令
POSIX bash/zsh $ source (venv-name)/bin/activate
$ source (venv-name)/bin/activate.fish
csh/tcsh $ source (venv-name)/bin/activate.csh
PowerShell核心 $ (venv-name)/bin/Activate.ps1
Windows cmd.exe C:> (venv-name)/Scripts/activate.bat
PowerShell PS C:> (venv-name)\Scripts\Activate.ps1

注意:POSIX上的$ 标志和Windows上的C:>,PS C:> 标志不是命令的一部分。

你可能注意到,我在POSIX(macOS和Linux)中使用bash shell,这就是为什么我在运行上面的命令。

环境被创建后

一旦虚拟环境被激活,终端提示就会发生一些变化。

下面的命令让你停用虚拟环境。

bash

代码解读

复制代码

deactivate

注意你的终端提示符又发生了变化。

现在再次激活你的虚拟环境,使用which 命令来检查正在使用的 Python 二进制文件。

bash

代码解读

复制代码

source virt1/bin/activate
which python

如果一切工作顺利,你应该得到类似于下面的输出。

bash

代码解读

复制代码

/home/daniel/tests/python-tests/venvs/virt1/bin/python

如果你再deactivatewhich ,你应该得到一个不同的输出。

bash

代码解读

复制代码

deactivate
/usr/bin/python

这是因为,当在一个虚拟环境中工作时,正在使用放置在该环境中的二进制拷贝。这同样适用于软件包。


转载来源:https://juejin.cn/post/7111691554217000973

相关文章
|
6天前
|
供应链 监控 安全
对话|企业如何构建更完善的容器供应链安全防护体系
随着云计算和DevOps的兴起,容器技术和自动化在软件开发中扮演着愈发重要的角色,但也带来了新的安全挑战。阿里云针对这些挑战,组织了一场关于云上安全的深度访谈,邀请了内部专家穆寰、匡大虎和黄竹刚,深入探讨了容器安全与软件供应链安全的关系,分析了当前的安全隐患及应对策略,并介绍了阿里云提供的安全解决方案,包括容器镜像服务ACR、容器服务ACK、网格服务ASM等,旨在帮助企业构建涵盖整个软件开发生命周期的安全防护体系。通过加强基础设施安全性、技术创新以及倡导协同安全理念,阿里云致力于与客户共同建设更加安全可靠的软件供应链环境。
132132 10
|
14天前
|
弹性计算 人工智能 安全
对话 | ECS如何构筑企业上云的第一道安全防线
随着中小企业加速上云,数据泄露、网络攻击等安全威胁日益严重。阿里云推出深度访谈栏目,汇聚产品技术专家,探讨云上安全问题及应对策略。首期节目聚焦ECS安全性,提出三道防线:数据安全、网络安全和身份认证与权限管理,确保用户在云端的数据主权和业务稳定。此外,阿里云还推出了“ECS 99套餐”,以高性价比提供全面的安全保障,帮助中小企业安全上云。
201925 14
对话 | ECS如何构筑企业上云的第一道安全防线
|
3天前
|
供应链 监控 安全
|
6天前
|
SQL 安全 前端开发
预编译为什么能防止SQL注入?
SQL注入是Web应用中常见的安全威胁,攻击者通过构造恶意输入执行未授权的SQL命令。预编译语句(Prepared Statements)是一种有效防御手段,它将SQL代码与数据分离,确保用户输入不会被解释为SQL代码的一部分。本文详细介绍了SQL注入的危害、预编译语句的工作机制,并结合实际案例和多语言代码示例,展示了如何使用预编译语句防止SQL注入,强调了其在提升安全性和性能方面的重要性。
|
9天前
|
搜索推荐 物联网 PyTorch
Qwen2.5-7B-Instruct Lora 微调
本教程介绍如何基于Transformers和PEFT框架对Qwen2.5-7B-Instruct模型进行LoRA微调。
417 34
Qwen2.5-7B-Instruct Lora 微调
|
1月前
|
人工智能 自然语言处理 前端开发
从0开始打造一款APP:前端+搭建本机服务,定制暖冬卫衣先到先得
通义灵码携手科技博主@玺哥超carry 打造全网第一个完整的、面向普通人的自然语言编程教程。完全使用 AI,再配合简单易懂的方法,只要你会打字,就能真正做出一个完整的应用。
9940 29
|
3天前
|
机器学习/深度学习 存储 人工智能
【科普向】我们所说的AI模型训练到底在训练什么?
人工智能(AI)模型训练类似于厨师通过反复实践来掌握烹饪技巧。它通过大量数据输入,自动优化内部参数(如神经网络中的权重和偏置),以最小化预测误差或损失函数,使模型在面对新数据时更加准确。训练过程包括前向传播、计算损失、反向传播和更新权重等步骤,最终生成权重文件保存模型参数,用于后续的应用和部署。理解生物神经网络的工作原理为人工神经网络的设计提供了灵感,后者广泛应用于图像识别、自然语言处理等领域。
|
2天前
|
人工智能 算法 搜索推荐
阿里云百炼xWaytoAGI共学课开课:手把手学AI,大咖带你从零搭建AI应用
阿里云百炼xWaytoAGI共学课开课啦。大咖带你从零搭建AI应用,玩转阿里云百炼大模型平台。3天课程,涵盖企业级文本知识库案例、多模态交互应用实操等,适合有开发经验的企业或独立开发者。直播时间:2025年1月7日-9日 20:00,地点:阿里云/WaytoAGI微信视频号。参与课程可赢取定制保温杯、雨伞及磁吸充电宝等奖品。欢迎加入钉钉共学群(群号:101765012406),与百万开发者共学、共享、共实践!
|
15天前
|
机器学习/深度学习 人工智能 安全
通义视觉推理大模型QVQ-72B-preview重磅上线
Qwen团队推出了新成员QVQ-72B-preview,这是一个专注于提升视觉推理能力的实验性研究模型。提升了视觉表示的效率和准确性。它在多模态评测集如MMMU、MathVista和MathVision上表现出色,尤其在数学推理任务中取得了显著进步。尽管如此,该模型仍存在一些局限性,仍在学习和完善中。

热门文章

最新文章

下一篇
开通oss服务