首页 后端开发 Python教程 我对虚拟环境、Docker 和 Shell 脚本的体验

我对虚拟环境、Docker 和 Shell 脚本的体验

Oct 05, 2024 am 06:08 AM

My Experience with Virtual Environments, Docker, and Shell Scripts

本周,我有一个很酷的作业,我和我的同学必须向彼此的开源项目添加功能。然而,当我的同学尝试运行我的项目时,他遇到了一个令人讨厌的依赖问题,导致整个应用程序崩溃。经过一番反复考虑,我们成功地通过使用虚拟环境、Docker 和简单的 shell 脚本的组合来修复它。让我们来分析一下发生了什么以及这些工具如何让您的生活变得更轻松。

1. 虚拟环境

如果您使用 Python,虚拟环境 是必须的。它们基本上创建了一个隔离的空间,您可以在其中为您的项目安装包,而不会弄乱您的全局 Python 设置。这就像拥有自己的 Python 游乐场,您可以在其中安全地添加和删除包。

以下是如何设置的快速概述:


python3 -m venv venv
source venv/bin/activate  # For Windows, use: venv\Scripts\activate


登录后复制

之后,您可以使用 pip 安装所有软件包:


<p>pip install -r requirements.txt</p>

登录后复制




为什么使用虚拟环境?

  • 保持整洁:虚拟环境将项目依赖关系分开,因此不同的项目不会互相干扰。
  • 保持同一页面:您可以创建一个requirements.txt 文件以确保团队中的每个人都使用相同的软件包版本。

当他们达不到要求时

有时,即使在虚拟环境中,事情仍然可能会出错——就像他们为我们所做的那样!依赖关系仍然崩溃,因为它更多的是系统级问题(呃)。这就是 Docker 拯救世界的地方。

2. 码头工人

Docker 创建容器来打包您的应用程序及其所有依赖项,包括系统库。这意味着它将在每台机器上以相同的方式运行。

这是我们的基本 Dockerfile 的样子:


<p># Use a lightweight Python image<br>
FROM python:3.9-slim</p>

<p># Set up a working directory<br>
WORKDIR /usr/src/app</p>

<p># Copy over the application files<br>
COPY . .</p>

<p># Install dependencies<br>
RUN pip install --no-cache-dir -r requirements.txt</p>

<p># Run the application<br>
CMD ["python", "app.py"]</p>

登录后复制




Docker 的优点

  • 一致性:无论您使用什么系统,Docker 都可以确保您的应用程序在任何地方都运行相同。
  • 没什么惊喜:Docker 包含所有系统库和依赖项,因此您不会遇到那些烦人的“缺少库”错误。
  • 易于共享:您可以与其他人共享您的 Docker 设置,他们只需运行一些简单的命令即可开始。

使用 Docker 运行应用程序

使用以下命令构建并运行 Docker 容器:


<p>docker build -t my-python-app .<br>
docker run -p 5000:5000 my-python-app</p>

登录后复制



  1. Shell 脚本

Shell 脚本就像您项目的私人助理。他们为您处理所有无聊的设置工作。我编写了一个简单的脚本 (setup.sh),用于设置虚拟环境、安装依赖项、构建 Docker 映像并运行容器。它看起来是这样的:


<p>#!/bin/bash</p>

<p># Set up virtual environment<br>
python3 -m venv venv<br>
source venv/bin/activate</p>

<p># Install dependencies<br>
pip install -r requirements.txt</p>

<p># Build Docker image<br>
docker build -t my-python-app .</p>

<p># Run Docker container<br>
docker run -p 5000:5000 my-python-app</p>

登录后复制




为什么要费心使用 Shell 脚本?

  • 一个命令即可统治所有:您无需运行一堆命令,只需运行脚本,它就会处理所有事情。
  • 不再犯错误:自动化设置过程意味着您不太可能犯错误。
  • 适用于任何地方:这些脚本可以在 Linux、macOS 甚至 Windows(如果您有 Bash)上使用。

TL;DR:何时使用什么

  • 虚拟环境:非常适合管理 Python 包。当您需要隔离依赖项但不需要系统级库时使用它们。
  • Docker:非常适合当您需要跨不同机器的一致环境时。它包含了您的应用程序运行所需的一切。
  • Shell 脚本:方便自动化整个设置过程,这样您就不会错过任何一步。

设置开发环境可能会让人头疼,尤其是在协作时。虚拟环境是坚实的第一步,但当事情变得棘手时,Docker 就是最佳选择。为了将所有这些结合在一起,shell 脚本可以使一切顺利运行。

希望这可以帮助任何处理类似问题的人! 如果您有任何其他方法来克服此类问题,请在下面的评论中告诉我。我很想听听你的消息。

以上是我对虚拟环境、Docker 和 Shell 脚本的体验的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

<🎜>:泡泡胶模拟器无穷大 - 如何获取和使用皇家钥匙
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系统,解释
3 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

热门话题

Java教程
1664
14
CakePHP 教程
1423
52
Laravel 教程
1318
25
PHP教程
1268
29
C# 教程
1248
24
Python vs.C:申请和用例 Python vs.C:申请和用例 Apr 12, 2025 am 12:01 AM

Python适合数据科学、Web开发和自动化任务,而C 适用于系统编程、游戏开发和嵌入式系统。 Python以简洁和强大的生态系统着称,C 则以高性能和底层控制能力闻名。

Python:游戏,Guis等 Python:游戏,Guis等 Apr 13, 2025 am 12:14 AM

Python在游戏和GUI开发中表现出色。1)游戏开发使用Pygame,提供绘图、音频等功能,适合创建2D游戏。2)GUI开发可选择Tkinter或PyQt,Tkinter简单易用,PyQt功能丰富,适合专业开发。

Python与C:学习曲线和易用性 Python与C:学习曲线和易用性 Apr 19, 2025 am 12:20 AM

Python更易学且易用,C 则更强大但复杂。1.Python语法简洁,适合初学者,动态类型和自动内存管理使其易用,但可能导致运行时错误。2.C 提供低级控制和高级特性,适合高性能应用,但学习门槛高,需手动管理内存和类型安全。

2小时的Python计划:一种现实的方法 2小时的Python计划:一种现实的方法 Apr 11, 2025 am 12:04 AM

2小时内可以学会Python的基本编程概念和技能。1.学习变量和数据类型,2.掌握控制流(条件语句和循环),3.理解函数的定义和使用,4.通过简单示例和代码片段快速上手Python编程。

Python和时间:充分利用您的学习时间 Python和时间:充分利用您的学习时间 Apr 14, 2025 am 12:02 AM

要在有限的时间内最大化学习Python的效率,可以使用Python的datetime、time和schedule模块。1.datetime模块用于记录和规划学习时间。2.time模块帮助设置学习和休息时间。3.schedule模块自动化安排每周学习任务。

Python vs.C:探索性能和效率 Python vs.C:探索性能和效率 Apr 18, 2025 am 12:20 AM

Python在开发效率上优于C ,但C 在执行性能上更高。1.Python的简洁语法和丰富库提高开发效率。2.C 的编译型特性和硬件控制提升执行性能。选择时需根据项目需求权衡开发速度与执行效率。

Python:自动化,脚本和任务管理 Python:自动化,脚本和任务管理 Apr 16, 2025 am 12:14 AM

Python在自动化、脚本编写和任务管理中表现出色。1)自动化:通过标准库如os、shutil实现文件备份。2)脚本编写:使用psutil库监控系统资源。3)任务管理:利用schedule库调度任务。Python的易用性和丰富库支持使其在这些领域中成为首选工具。

学习Python:2小时的每日学习是否足够? 学习Python:2小时的每日学习是否足够? Apr 18, 2025 am 12:22 AM

每天学习Python两个小时是否足够?这取决于你的目标和学习方法。1)制定清晰的学习计划,2)选择合适的学习资源和方法,3)动手实践和复习巩固,可以在这段时间内逐步掌握Python的基本知识和高级功能。

See all articles