Py学习  »  Python

Python环境功能介绍

古月居 • 1 年前 • 262 次点击  

观前提醒:本文详细介绍了Python环境的结构、python虚拟环境基础用法,以及python中的环境&依赖管理。



0.什么是Python环境


Python环境是指一个特定的设置,其中包含了运行Python代码所需的一系列软件工具和包。这个环境可以包括Python解释器、一组安装的包、模块以及相关的配置设置。Python环境可以帮助你管理依赖关系,确保不同项目之间的依赖隔离,避免版本冲突。


基本上,Python环境可以分为两种:


1.全局环境:


全局环境是指安装在操作系统上的Python环境。

它是所有Python程序的默认环境,除非特别指定使用其他环境。

修改全局环境会影响系统上所有使用这个Python解释器的项目。


2.虚拟环境:


虚拟环境是一个独立的环境,可以有自己的Python解释器和一组包。

它使得不同项目可以拥有不同的依赖,不会互相干扰。

虚拟环境通常使用venv模块创建,该模块是Python 3的标准库的一部分。

虚拟环境位于项目文件夹中,便于管理和迁移。



一、Python环境的结构


Python环境由几个关键组件组成,它们共同支持Python代码的运行和管理。这些组件包括:


1. Python解释器


Python解释器是最核心的组件,它是一个软件包,能够执行Python代码。你可以从Python官网下载,并且有多个版本可供选择(如Python 2.x已停止更新,而Python 3.x是目前的主流)。


2. 标准库


Python的标准库提供了广泛的模块和函数,它们被内置在Python解释器中。标准库涵盖了从文本处理到网络通信等许多功能。


3. 第三方库


除了标准库之外,Python的强大功能还得益于社区提供的大量第三方库。这些库可以通过包管理工具如pip安装,并用于各种特定的任务和应用程序开发。


4. 包管理器


Python使用包管理器来安装、更新、卸载和管理第三方库的依赖。最广泛使用的包管理器是pip,它与Python标准库一起分发。



二、Python虚拟环境


Python虚拟环境是一个独立的目录树,其中安装了特定版本的Python解释器以及一系列附加包。当你激活一个虚拟环境时,你的系统路径(PATH)会暂时修改,以便任何对Python解释器或Python脚本的调用都会使用虚拟环境中的版本。



为什么使用虚拟环境?


依赖管理:不同的项目可能需要不同版本的库,虚拟环境可以避免版本冲突。


权限问题:在系统级别安装库可能需要管理员权限,虚拟环境则可以在用户级别安装。


清洁和整洁:虚拟环境保持你的全局Python环境清洁,便于管理。


复制环境:虚拟环境可以帮助你复制和分享环境配置,便于协作和部署。


如何创建和使用Python虚拟环境?


使用venv(推荐方法)


venv是Python自带的虚拟环境创建工具,不需要额外安装。


1.创建虚拟环境:


python3 -m venv myenv#在Windows上,Python命令通常只是python,而不是python3#所以需要使用python -m venv myenv


这会在当前目录下创建一个名为myenv的虚拟环境。


2.激活虚拟环境:


在Unix或Mac上:


source myenv/bin/activate


在Windows上:


myenv\Scripts\activate



3.安装包:


在激活的虚拟环境中使用pip安装包只会影响当前环境。


pip install requests


4.退出虚拟环境:


deactivate


使用virtualenv


virtualenv是一个独立的第三方包,更早之前的Python版本使用这个包来创建虚拟环境。


1.安装virtualenv:


pip install virtualenv


2.创建虚拟环境:


virtualenv myenv


3.激活和退出:


激活和退出的步骤与venv相同。


使用Pipenv


Pipenv自动管理虚拟环境和依赖文件,它结合了pip的包管理和venv的环境管理。


1.安装Pipenv:


pip install pipenv


2.创建和激活虚拟环境:


pipenv shell


这将自动创建虚拟环境并激活它。


3.安装包并更新Pipfile:


pipenv install requests


使用Poetry


Poetry处理依赖管理和包的创建,使用pyproject.toml文件来管理依赖。


1.安装Poetry:


pip install poetry


2.初始化项目和虚拟环境:


poetry initpoetry install



虚拟环境的依赖管理


一个新创建的Python环境中包含哪些依赖呢?


一个新创建的虚拟环境默认情况下是相当“干净”的,它不会包含任何外部安装的第三方包。它所包含的仅仅是Python标准库中的模块以及少数必要的服务模块(如pip、setuptools和wheel),这些模块是用于安装和管理其他包的基础工具。


标准库是Python的一部分,提供了许多内建的模块和函数,用于执行系统管理任务、数学运算、文件操作等常见操作。标准库的模块在所有Python环境中都可用,无须额外安装。


pip 是Python的包安装器,它允许你从Python Package Index(PyPI)安装其他Python软件包。


setuptools 是一个Python包开发过程中的一个增强工具集,它帮助你更容易地构建和分发Python包,特别是那些依赖于其他包的包。


wheel 是一个与pip配合使用的Python分发包格式,用于替代egg格式,它设计用于更快速地安装Python包。


当你创建一个新的虚拟环境时,标准库以及这些基础服务模块会被安装在虚拟环境中,但是除此之外,不会有其他第三方库。这样做的好处是你可以从一个干净的基础开始构建你的项目,只安装你项目实际需要的包,避免了不必要的依赖和潜在的版本冲突。


要查看虚拟环境中已安装的包,你可以激活虚拟环境并使用命令 pip list 或 pip freeze。在一个全新的虚拟环境中,这个列表通常很短,只包含上述提到的几个包。


这里我们对比一下系统环境和新建环境中的已安装的包:(如果你不想你的环境像我的环境一样糟糕,那就多多利用虚拟环境吧)




虚拟环境的pip源


当虚拟环境被激活后,pip会优先使用虚拟环境内的配置文件。你可以创建或修改这个文件来指定pip源。


在Linux和macOS上,配置文件通常位于$VIRTUAL_ENV/pip.conf。


在Windows上,配置文件通常位于%VIRTUAL_ENV%\pip.ini。


通过修改pip的配置文件就可以修改虚拟环境的pip源


举个栗子


下面我们通过一个具体的例子来展示如何使用虚拟环境以及 pip 和 requirements.txt 来管理Python项目的依赖。


下面我们构建一个简单的Web应用,它使用Flask框架。还需要requests库来处理HTTP请求。


步骤1:创建虚拟环境


在项目的根目录下创建一个虚拟环境。这样做可以确保你安装的依赖不会影响到系统中的其他Python项目。


python -m venv venv


这将在当前目录下创建一个名为 venv 的虚拟环境。要激活这个虚拟环境,你需要运行以下命令:


在Unix或macOS上:


source venv/bin/activate


在Windows上:


venv\Scripts\activate


    


步骤2:安装依赖


现在,安装项目所需的依赖。


pip install flask requests


这将安装Flask和requests库,以及它们的依赖。


步骤3:生成requirements.txt


接下来,你需要创建一个 requirements.txt 文件,它将包含所有已安装包的精确版本号。


pip freeze > requirements.txt


这个命令会生成一个新的 requirements.txt 文件,里面包含了所有依赖及其版本。打开这个文件,你会看到类似以下内容:


click==7.1.2Flask==1.1.2itsdangerous==1.1.0Jinja2==2.11.2MarkupSafe==1.1.1requests==2.24.0Werkzeug==1.0.1


步骤4:使用requirements.txt安装依赖


现在,如果你想在另一个环境(可能是另一台机器或另一个开发者的电脑上)安装这些依赖,你只需激活虚拟环境并运行以下命令:


pip install -r requirements.txt


这将在新环境中安装与原始环境中完全相同版本的依赖。


当然我我们也可以创建多个依赖文件:


如果你的应用有开发依赖(如测试框架)和生产依赖,可以创建两个文件:requirements.txt 和 requirements-dev.txt,分别管理生产和开发依赖。



三、环境容器化


Python容器化:简化部署与扩展


Python在多个领域蓬勃发展,从Web开发到数据科学,从自动化脚本到机器学习。但是,随着Python应用的复杂性增加,确保应用在不同环境中能够一致运行变得越来越重要。这正是容器化技术发挥作用的地方。在本篇博客中,我们将探究如何使用容器化来部署Python应用,提高其可移植性与可伸缩性。


容器化简介


容器化是一种轻量级的、可执行的软件包技术,它将应用程序及其所有依赖、配置和运行时环境封装在一个容器中。与传统的虚拟机相比,容器直接在宿主机的操作系统上运行,减少了额外的负担。


Docker: 容器化的代名词


当我们谈论容器化时,最著名的工具非Docker莫属。Docker利用了Linux的容器技术,如Cgroups和Namespace,提供了一个独立的环境来运行应用程序。


为什么Python项目适合容器化?


环境一致性:避免了“在我的机器上可以运行”的问题。

依赖隔离:每个容器都有自己的环境,不同容器间依赖不会相互冲突。

快速部署:容器可以在几秒钟内启动,使得部署变得迅速而简单。

易于扩展和管理:容器化的应用可以轻松地横向扩展,满足不断变化的负载需求。


容器化Python应用的步骤


让我们通过一个简单的例子来说明如何容器化一个Python Web应用。


步骤1:准备Python应用


假设你有一个简单的Flask应用,代码如下:


# app.pyfrom flask import Flaskapp = Flask(__name__)
@app.route('/')def hello_world():    return 'Hello, Docker!'
if __name__ == '__main__':    app.run(debug=True, host='0.0.0.0')


步骤2:编写Dockerfile


Dockerfile是一个文本文档,包含了所有用来构建镜像的命令。


# 使用官方Python运行时作为父镜像FROM python:3.8-slim
# 将工作目录设置为/appWORKDIR /app
# 将当前目录内容复制到位于/app中的容器中COPY . /app
# 安装requirements.txt中指定的任何所需包RUN pip install --no-cache-dir -r requirements.txt
# 使端口80可用于此容器外的环境EXPOSE 80
# 定义环境变量ENV NAME World
# 在容器启动时运行app.pyCMD ["python", "app.py"]


这个Dockerfile创建了一个简单的Flask应用的Docker镜像。


步骤3:构建Docker镜像


在包含Dockerfile的应用程序根目录下,运行以下命令来构建镜像:


docker build -t my-python-app .


步骤4:运行容器


一旦镜像构建完成,你可以运行一个容器:


docker run -p 4000:80 my-python-app


这个命令告诉Docker运行镜像并映射端口4000到容器的端口80。







Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/166969
 
262 次点击