轻松搞定在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

相关文章
|
1月前
|
Ubuntu Linux 测试技术
Python 虚拟环境配置
本文总结了 Python 开发中的环境配置、常用操作和常见错误处理。重点介绍了如何使用 `virtualenv` 搭建虚拟环境,解决依赖冲突问题,并保持系统环境的干净。同时,详细说明了依赖库的安装与管理方法,包括使用 `pip install` 安装依赖、生成和使用 `requirements.txt` 文件,以及查看 Python 文档和修改环境变量等实用技巧。
131 60
|
1天前
|
存储 人工智能 程序员
通义灵码AI程序员实战:从零构建Python记账本应用的开发全解析
本文通过开发Python记账本应用的真实案例,展示通义灵码AI程序员2.0的代码生成能力。从需求分析到功能实现、界面升级及测试覆盖,AI程序员展现了需求转化、技术选型、测试驱动和代码可维护性等核心价值。文中详细解析了如何使用Python标准库和tkinter库实现命令行及图形化界面,并生成单元测试用例,确保应用的稳定性和可维护性。尽管AI工具显著提升开发效率,但用户仍需具备编程基础以进行调试和优化。
70 9
|
28天前
|
Shell Linux Ruby
Python3虚拟环境venv
`venv` 是 Python 的虚拟环境工具,用于为不同项目创建独立的运行环境,避免依赖冲突。通过 `python3 -m venv` 命令创建虚拟环境,并使用 `source bin/activate` 激活。激活后,所有 Python 包将安装在该环境中,不影响系统全局环境。退出环境使用 `deactivate` 命令。每个虚拟环境拥有独立的包集合,确保项目间的隔离性。删除虚拟环境只需删除其目录即可。
89 34
|
23天前
|
人工智能 开发者 Python
Chainlit:一个开源的异步Python框架,快速构建生产级对话式 AI 应用
Chainlit 是一个开源的异步 Python 框架,帮助开发者在几分钟内构建可扩展的对话式 AI 或代理应用,支持多种工具和服务集成。
143 9
|
1月前
|
SQL 分布式计算 数据处理
云产品评测|分布式Python计算服务MaxFrame | 在本地环境中使用MaxFrame + 基于MaxFrame实现大语言模型数据处理
本文基于官方文档,介绍了由浅入深的两个部分实操测试,包括在本地环境中使用MaxFrame & 基于MaxFrame实现大语言模型数据处理,对步骤有详细说明。体验下来对MaxCompute的感受是很不错的,值得尝试并使用!
56 1
|
1月前
|
Python
探索Python虚拟环境:virtualenv、venv与pipenv比较
在Python开发中,有效的环境管理至关重要。virtualenv、venv和pipenv是常用的虚拟环境管理工具。virtualenv支持Python 2.7+和3.3+,可创建独立环境;venv为Python 3.3+内置库,简单轻量但功能有限;pipenv则结合了包管理和虚拟环境管理,生成Pipfile.lock确保依赖确定性和安全性,推荐作为首选工具。
|
1月前
|
人工智能 编译器 Python
python已经安装有其他用途如何用hbuilerx配置环境-附带实例demo-python开发入门之hbuilderx编译器如何配置python环境—hbuilderx配置python环境优雅草央千澈
python已经安装有其他用途如何用hbuilerx配置环境-附带实例demo-python开发入门之hbuilderx编译器如何配置python环境—hbuilderx配置python环境优雅草央千澈
41 0
python已经安装有其他用途如何用hbuilerx配置环境-附带实例demo-python开发入门之hbuilderx编译器如何配置python环境—hbuilderx配置python环境优雅草央千澈
|
2月前
|
机器学习/深度学习 Rust 算法
Python环境管理的新选择:UV和Pixi,高性能Python环境管理方案
近期Python生态系统在包管理领域发生了重要变化,Anaconda调整商业许可证政策,促使社区寻找更开放的解决方案。本文介绍两款新一代Python包管理工具:UV和Pixi。UV用Rust编写,提供高性能依赖解析和项目级环境管理;Pixi基于Conda生态系统,支持conda-forge和PyPI包管理。两者分别适用于高性能需求和深度学习项目,为开发者提供了更多选择。
335 2
|
2月前
|
数据采集 分布式计算 大数据
构建高效的数据管道:使用Python进行ETL任务
在数据驱动的世界中,高效地处理和移动数据是至关重要的。本文将引导你通过一个实际的Python ETL(提取、转换、加载)项目,从概念到实现。我们将探索如何设计一个灵活且可扩展的数据管道,确保数据的准确性和完整性。无论你是数据工程师、分析师还是任何对数据处理感兴趣的人,这篇文章都将成为你工具箱中的宝贵资源。
|
2月前
|
机器学习/深度学习 人工智能 算法
深度学习入门:用Python构建你的第一个神经网络
在人工智能的海洋中,深度学习是那艘能够带你远航的船。本文将作为你的航标,引导你搭建第一个神经网络模型,让你领略深度学习的魅力。通过简单直观的语言和实例,我们将一起探索隐藏在数据背后的模式,体验从零开始创造智能系统的快感。准备好了吗?让我们启航吧!
115 3

热门文章

最新文章