当前位置: 首页 > news >正文

Jenkins - Python 虚拟环境

Jenkins - Python 虚拟环境

  • 引言
  • Python 虚拟环境
  • 创建 Python 虚拟环境
    • 安装 virtualenv(可选)
    • 创建虚拟环境
    • 激活虚拟环境
    • 安装依赖包
    • 退出虚拟环境(可选)
    • 注意
  • Python 虚拟环境实践

引言

Automation 脚本通常会部署到 Jenkins 上运行,Jenkins 环境是随机分配虚拟机的,有些 Node 上虚拟机环境还都不一样,安装的依赖包,操作系统也各不相同。经常有遇到脚本有时跑失败,有时跑成功了,很大原因就是安装脚本所需的安装包失败。我们可以用虚拟环境来解决这一问题,今天就来了解一下 Python 虚拟环境。

Python 虚拟环境

Python 虚拟环境 (Virtual Environment) 是一种隔离的环境,每个虚拟环境都有自己的 Python 解释器和一组独立的库,从而避免了不同项目之间的依赖冲突。

使用虚拟环境有许多好处,尤其在管理项目依赖和开发环境时显得尤为重要。

  1. 依赖隔离
    虚拟环境允许你为每个项目创建独立的依赖环境。这意味着一个项目中的库和版本不会影响到另一个项目。这样可以避免版本冲突和兼容性问题。
  2. 更好的项目管理
    在虚拟环境中,你可以安装特定于某个项目的依赖包,并确保这些包的版本是项目所需的版本。这有助于确保项目在不同开发环境中的一致性。
  3. 简化部署
    使用虚拟环境可以简化项目的部署过程。通过生成 requirements.txt 文件,你可以轻松地在任何环境中重现项目的依赖配置,从而简化应用的安装和部署。
  4. 提高安全性
    虚拟环境可以隔离项目的依赖包,从而减少与系统全局包的交互。这有助于避免意外修改系统级的库和包,降低了引入安全风险的可能性。
  5. 多个 Python 版本共存
    虚拟环境允许你在同一台机器上使用不同版本的 Python。这对于需要同时维护和开发多个基于不同 Python 版本的项目特别有用。
  6. 简化开发环境设置
    开发人员可以为项目创建一个统一的开发环境配置,确保团队成员之间的一致性。通过共享虚拟环境配置文件(如 requirements.txt),团队成员可以快速搭建和同步开发环境。
  7. 避免权限问题
    在某些操作系统上,安装全局包可能需要管理员权限。使用虚拟环境可以避免这些权限问题,因为虚拟环境中的包安装在用户目录下,无需管理员权限。
  8. 提供清洁的环境
    虚拟环境提供一个干净的工作区,不包含任何未使用的全局安装包。这使得调试和测试更加简洁和明确。

总结
使用虚拟环境不仅能提高开发效率,还能减少项目之间的依赖冲突和兼容性问题,是现代 Python 开发中不可或缺的工具。通过合理利用虚拟环境,开发人员可以更好地管理和维护项目,提高开发和部署的质量和效率。

创建 Python 虚拟环境

安装 virtualenv(可选)

virtualenv是一个用于创建隔离的Python环境的第三方工具。虽然 Python 3.3 及以上版本内置了venv模块,可以直接创建虚拟环境,但virtualenv提供了一些额外的功能和更广泛的兼容性,特别是在早于 Python 3.3 的版本中。
如果你使用的是 Python 3.3 或更高版本,并且只需要基本的虚拟环境功能,那么你可能不需要安装virtualenv,因为你可以直接使用内置的venv模块。然而,如果你需要virtualenv提供的额外功能或者你在使用早于 Python 3.3 的版本,那么你需要安装virtualenv

安装virtualenv的命令如下:

pip install virtualenv

这个命令使用pip(Python的包管理器)来安装virtualenv。一旦安装,你就可以使用virtualenv命令来创建虚拟环境了。

创建虚拟环境

使用 venv 模块(Python 3.3 及以上版本自带)创建虚拟环境:

python -m venv myenv

或者使用 virtualenv:

virtualenv myenv

其中 myenv 是虚拟环境的名称,可以随意命名。执行这个命令后,venv 或 virtualenv 模块会在当前目录下创建一个名为 myenv 的文件夹,其中包含了一个独立的 Python 解释器以及一个空的 pip 库。这样,你就可以在这个虚拟环境中安装和管理包,而不会影响到系统级别的Python环境。

激活虚拟环境

在不同操作系统上,激活虚拟环境的方式略有不同,激活虚拟环境后,你的命令行提示符可能会显示虚拟环境的名称,表明虚拟环境已经被激活。

  • Windows:
myenv\Scripts\activate
  • macOS 和 Linux:
source myenv/bin/activate

如果你遇到了 source: not found 错误,这通常意味着你正在使用的 shell 不识别 source 命令,在Unix或类Unix系统(如 Linux 和 MacOS)中,.(点命令)是 source 命令的一个别名,所以可以尝试下面命令

. myvenv/bin/activate

安装依赖包

在虚拟环境激活后,可以使用 pip 安装所需的包。例如:

pip install requests

退出虚拟环境(可选)

虚拟环境的激活只对当前 shell session有效,不跨 session 传递,所以这个命令是可选的。
可以通过以下命令退出虚拟环境:

deactivate

注意

如果你在一个新的 shell session 中工作,之前激活的虚拟环境不会自动激活。每次你开启一个新的 shell session 时,如果你想在该 session 中使用之前创建的虚拟环境,你需要手动激活它。虚拟环境的激活只对当前 shell session有效,不跨 session 传递。

这意味着,对于每个新的 shell session,如果你想使用特定的虚拟环境,你需要重复激活步骤。记住,每次你开启一个新的 shell session 并希望使用虚拟环境时,这个激活步骤都是必需的。这确保了你的项目依赖是隔离的,并且不会不小心使用到全局 Python 环境中的包。

如果在另外一个 Shell session 中不激活虚拟环境,只是临时运行某个命令,也可以直接使用虚拟环境目录下执行命令
例如:

myenv/bin/python -m pip install -r requirements.txt 

Python 虚拟环境实践

下面是一个完整的示例,展示了如何创建和使用虚拟环境:

命令 python -m venv myvenv --system-site-packages --clear 用于创建一个新的 Python 虚拟环境,同时包含了一些特定的选项,如下所述:

  • –system-site-packages: 这个选项使得虚拟环境能够访问系统级 Python 安装中的 site-packages 目录下的包。这意味着虚拟环境不仅可以使用在其内部安装的包,还可以使用全局安装的包。
  • –clear: 如果目标目录(在这个例子中是 myvenv 目录)已经存在,这个选项会在创建新的虚拟环境之前清除目标目录中的所有内容。这对于重置虚拟环境到一个干净的状态很有用。
cat /proc/version
sudo apt -y install python3.8-venv
whereis python
python -V
python3 -V
python -m venv myvenv --system-site-packages --clear
. myvenv/bin/activate
# 安装依赖包
pip install requests
# 验证安装
python -c "import requests; print(requests.__version__)"

如果在尝试使用 python -m venv myenv 创建虚拟环境时遇到 “ensurepip is not available” 的错误,这意味着 Python 安装中缺少 ensurepip模块,该模块负责在虚拟环境中安装 pip。这个问题可能发生在某些 Python 安装中,特别是在某些 Linux 发行版上,它们可能没有包含ensurepip。
Jenkinns 虚拟机这个版本就没有包含 ensurepip。所以需要执行 sudo apt -y install python3.8-venv 命令
这条命令是在基于Debian的Linux系统(如Ubuntu)中使用 apt 包管理器安装 python3.8-venv 包的命令
python3.8-venv 包提供了 Python 3.8 的虚拟环境支持

18:42:18 + cat /proc/version
18:42:18 Linux version 5.15.0-1063-aws (buildd@lcy02-amd64-003) (gcc (Ubuntu 9.4.0-1ubuntu1~20.04.2) 9.4.0, GNU ld (GNU Binutils for Ubuntu) 2.34) #69~20.04.1-Ubuntu SMP Fri May 10 19:20:12 UTC 2024

相关文章:

Jenkins - Python 虚拟环境

Jenkins - Python 虚拟环境 引言Python 虚拟环境创建 Python 虚拟环境安装 virtualenv(可选)创建虚拟环境激活虚拟环境安装依赖包退出虚拟环境(可选)注意 Python 虚拟环境实践 引言 Automation 脚本通常会部署到 Jenkins 上运行&…...

每日一道算法题 面试题 08.08. 有重复字符串的排列组合

题目 面试题 08.08. 有重复字符串的排列组合 - 力扣(LeetCode) Python class Solution:def permutation(self, S: str) -> List[str]:# 以索引记录字符是否用过lelen(S)idx[_ for _ in range(le) ]# 组合得到的字符串combine[]*leans[]# 递归def fu…...

Apache Kylin资源管理全指南:优化你的大数据架构

标题:Apache Kylin资源管理全指南:优化你的大数据架构 摘要 Apache Kylin是一个开源的分布式分析引擎,旨在为大规模数据集提供高性能的SQL查询能力。在Kylin中进行有效的资源管理对于确保查询性能和系统稳定性至关重要。本文将详细介绍如何…...

计算机网络微课堂(湖科大教书匠)TCP部分

计算机网络微课堂(湖科大教书匠)TCP部分 【计算机网络微课堂(有字幕无背景音乐版)】 TCP的流量控制 一般来说,我们希望数据传输得更快一些。但如果发送方把数据发送得过快,接收方就可能来不及接收&#…...

C++ 字符串介绍

在C编程中,字符串是非常重要的数据类型之一。字符串用于表示文本信息,处理字符串是许多程序的基本需求。C提供了多种方式来处理字符串,包括C风格的字符串(C-strings)和C标准库中的std::string类。本文将介绍这两种字符…...

[Cloud Networking] BGP

1. AS (Autonomous System) 由于互联网规模庞大,所以网络会被分为许多 自治系统(AS-Autonomous system)。 所属类型ASN名称IPv4 数量IPv6数量运营商ISPAS3356LEVEL3 - Level 3 Parent, LLC, US29,798,83273,301,954,048互联网企业AS15169GO…...

Typora failed to export as pdf. undefined

变换版本并没有用,调整图片大小没有用 我看到一个博客后尝试出方案 我的方法 解决:从上图中的A4,变为其他,然后变回A4 然后到处成功,Amazing! 参考: Typora 导出PDF 报错 failed to export…...

windows 10 安装tcping 使用教程

1 官网下载:tcping下载 2 复制tcping 到win10系统目录C:\Windows\System32 3 tcping 网址测试,可以指定端口 4 tcping 测试端口联通 5 tcping http模式...

[leetcode hot 150]第一百二十二题,买卖股票的最佳时机Ⅱ

题目: 给你一个整数数组 prices ,其中 prices[i] 表示某支股票第 i 天的价格。 在每一天,你可以决定是否购买和/或出售股票。你在任何时候 最多 只能持有 一股 股票。你也可以先购买,然后在 同一天 出售。 返回 你能获得的 最大…...

openstack Y版在ubuntu22.04上不能创建超过8个cpu的虚拟机问题解决

环境 openstack 版本: Y版25.2.1 操作系统:ubuntu22.04 问题 创建16 vcpu的虚拟机,报错: Failed to build and run instance: libvirt.libvirtError: error from service: GDBus.Error:org.freedesktop.DBus.Error.InvalidArgs…...

全国31省细分产品出口数据集(2002-2022年)

数据简介:整理全国31个省直辖市自治区按hs码分的22类细分产品的出口数据,只包含22类的细分,不包含更细的类目。可用来计算出口产品质量,出口产品技术复杂度等指标,数据区间为2002-2022年。 数据名称:31省细…...

1,Windows-本地Linux 系统(WSL)

目录 第一步电脑设置 第二步安装Ubuntu 第三文件传递 开发人员可以在 Windows 计算机上同时访问 Windows 和 Linux 的强大功能。 通过适用于 Linux 的 Windows 子系统 (WSL),开发人员可以安装 Linux 发行版(例如 Ubuntu、OpenSUSE、Kali、Debian、Arc…...

K8S 角色/组件及部署方式的简单概述

1.宏观架构图 2.角色详情 2.1 Master(Controller Plane) 早期是叫 Master 节点,后期改名为 Controller Plane,负责整个集群的控制和管理 Master 不会干活的(当然你让它干也是会干的,涉及到污点容忍),而是起到访问入口&#xff…...

堆【模板】小根堆堆【模板】大根堆(回)

目录 堆【模板】小根堆 题目描述1 输入1 输出1 样例输入 1 样例输出 1 提示1 代码1 堆【模板】大根堆 题目描述2 输入 输出 样例输入2 样例输出2 提示2 代码2 堆【模板】小根堆 题目描述1 初始小根堆为空,我们需要支持以下3种操作: 操作…...

【JavaScript】JavaScript简介

希望文章能给到你启发和灵感~ 如果觉得文章对你有帮助的话,点赞 关注 收藏 支持一下博主吧~ 阅读指南 JavaScript入门(1)————JavaScript简介开篇说明一、什么是JavaScript二、JavaScript的使用2.1 开发工具的选择…...

pg_rman:备份和恢复管理工具#postgresql培训

pg_rman 是 PostgreSQL 的在线备份和恢复工具。 pg_rman 项目的目标是提供一种与 pg_dump 一样简单的在线备份和 PITR 方法。此外,它还为每个数据库集群维护一个备份目录。用户只需一个命令即可维护包括存档日志在内的旧备份。 #PG培训#PG考试#postgresql考试#pos…...

【小学期】常用基于Swing的七个静态界面

示例1:基本的带按钮和标签的界面 import javax.swing.*; import java.awt.*;public class SimpleSwingApp1 {public static void main(String[] args) {JFrame frame new JFrame("Simple Swing App 1");frame.setDefaultCloseOperation(JFrame.EXIT_ON_C…...

JavaScript高级程序设计(第四版)--学习记录之迭代器与生成器(上)

什么是迭代? 迭代的意思是按照顺序反复多次执行一段程序。循环是迭代机制的基础,因为它可以指定迭代的次数,以及每次迭代要执行的操作。 迭代器模式 迭代器模式描述了一个方案,可以把有些结构称为“可迭代对象” ,这些…...

51单片机第9步_结构和联合

本章重点学习结构和联合。 //结构和联合应用举例 #include <REG51.h> //包含头文件REG51.h,使能51内部寄存器; #include <stdio.h> //包含头文件stdio.h //_getkey();从串口读入一个字符; //putchar();向串口发送一个字节; //printf();向串口发送一串字节; /…...

lua5.3.4的Linux的库文件下载地址

从这个链接选lua5.3.4 Lua Binaries (sourceforge.net) 进入-> 这个页面 LuaBinaries - Browse /5.3.4/Linux Libraries at SourceForge.net 之后就可以下载了。...

网盘挂载系统-知识资源系统-私域内容展示系统

系统介绍&#xff1a; 存储&#xff1a;一共支持约30款云盘存储&#xff0c;其中包括主流的&#xff08;百度网盘、阿里云盘、夸克云盘、迅雷云盘、蓝奏云、天翼云盘&#xff09;&#xff0c;部分展示 以及特别的&#xff08;一刻相册、对象存储、又拍云存储、SFTP、MEGA 网盘…...

水位自动监测摄像机

随着科技的不断进步&#xff0c;水位自动监测摄像机作为现代智能监控技术的重要应用&#xff0c;正在广泛应用于水利工程、防洪管理和环境监测等领域&#xff0c;显著提升了监测效率和数据准确性。水位自动监测摄像机利用高精度摄像头和先进的图像处理技术&#xff0c;能够实时…...

基于SSM+Jsp的疫情居家办公OA系统

开发语言&#xff1a;Java框架&#xff1a;ssm技术&#xff1a;JSPJDK版本&#xff1a;JDK1.8服务器&#xff1a;tomcat7数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09;数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/ideaMaven包…...

phpstorm2024代码总是提示“no usages”或者“无用法”解决办法

问题&#xff1a;phpstorm2024使用时&#xff0c;总是会提示无用法&#xff0c;如果没有安装中文语言包的情况下会提示&#xff1a;no usages&#xff0c;如果想关闭怎么办&#xff1f; 编译器右上角点击齿轮进入设置&#xff0c;按照下图的方法点击即可关闭。或者在编译器的“…...

Unity WebGL项目问题记录

一、资源优化 可通过转换工具配套提供的资源优化工具&#xff0c;将游戏内纹理资源针对webgl导出做优化。 工具入口&#xff1a; 工具介绍 Texture 搜索规则介绍 已开启MipMap: 搜索已开启了MipMap的纹理。 NPOT: 搜索非POT图片。 isReadable: 搜索已开启readable纹理。 …...

如何级联移位寄存器(74HC595)

在这个项目中&#xff0c;我们将使用 74HC595 移位寄存器将 2 个移位寄存器级联在一起。这样级联移位寄存器现在可以控制 16 个输出。 当然您可以级联任意数量的移位寄存器。如果您要级联第三个移位寄存器&#xff0c;它可以控制 24 个输出。如果您级联第四个移位寄存器&#x…...

找到你的专属健康食谱:结合肠道菌群与疾病状态

谷禾健康 俗话说&#xff1a;“病从口入”。饮食是决定个人健康状况的重要因素&#xff0c;饮食与疾病的发展有关&#xff0c;特别是胃肠道(GI)疾病。 与膳食相关的症状发生率很高&#xff0c;例如在吸收不良(如乳糖不耐症)情况下出现的腹痛和腹泻&#xff1b;乳糜泻、食物过敏…...

大模型微调实战之基于星火大模型的群聊对话分角色要素提取挑战赛:Task01:跑通Baseline

目录 0 背景1 环境配置1.1 下载包1.2 配置密钥1.3 测试模型 2 解决问题2.1 获取数据2.2 设计Prompt2.2 设计处理函数2.3 开始提取 附全流程代码 0 背景 Datawhale AI夏令营第二期开始啦&#xff0c;去年有幸参与过第一期&#xff0c;收获很多&#xff0c;这次也立马参与了第二…...

大数据开发如何管理项目

在面试的时候总是 会问起项目&#xff0c;那在大数据开发的实际工作中&#xff0c;如何做好一个项目呢&#xff1f; 目录 1. 需求分析与项目规划1.1 需求收集与梳理1.2 可行性分析1.3 项目章程与计划 2. 数据准备与处理2.1 数据源接入2.2 数据仓库建设2.3 数据质量管理 3. 系统…...

在实施数据加密时,有哪些常见的加密技术可供选择?

在实施数据加密时&#xff0c;有哪些常见的加密技术可供选择&#xff1f; 在实施数据加密时&#xff0c;有许多常见的加密技术可供选择&#xff0c;这些技术根据其原理、安全性、效率和适用场景有所不同。以下是一些常见的加密技术&#xff1a; 对称加密&#xff08;Symmetri…...

ftp上传后没有网站/网络服务主要包括

很多自媒体小编都会在文章中添加诙谐幽默的动态表情图&#xff0c;通常情况下&#xff0c;我们会直接在网络上搜索下载需要的表情图&#xff0c;下载后还需要用PS修改和调整才能应用到文章中。因此常常为了添加满足需求的表情图&#xff0c;我们会消耗大量的时间在修图环节中&a…...

网站速成/微信crm客户管理系统

PLAN_HASH_VALUE: 反应sql的执行计划&#xff0c;如果不同的sql的 PLAN_HASH_VALUE 相同&#xff0c;则表示这些sql的执行计划相同。 HASH_VALUE:sql_id的后几位的一个值&#xff0c;因此不同的sql 的HASH_VALUE 也可能相同。 sql_id&#xff1a;能够唯一标示一条sql versi…...

网站空间去哪买/地推项目对接平台

vue-cli 更名为 vue/cli后&#xff0c;笔者用vue/cli创建了一个项目并打包&#xff0c;发现打包后的文件含有 js.map 文件。 map文件的作用在于&#xff1a;项目打包后&#xff0c;代码都是经过压缩加密的&#xff0c;如果运行时报错&#xff0c;输出的错误信息无法准确得知是…...

网站编辑 seo/地推推广方案

hsqujy Matrix排名:9049 排名变化: -26 用户等级:1 总发贴数:3 总积分(Karma):86 参与分(经验):15 专家分(威望):5 可用分(财富):142 类型: 普通用户 注册:2005-08-17 在线状态: 离线 [信息] [引用] [回复] 楼 主 BACK TOP --------------------------------------------------…...

网站域名注册价格/佛山网站优化软件

类加载过程 Class文件需要加载到虚拟机中才能运行&#xff0c;虚拟机加载Class类型文件主要的步骤如下&#xff1a; 加载、验证、准备、初始化这4个过程过程是按照这种顺序按部就班地开始的&#xff0c;而解析阶段不一定&#xff1b;按顺序开始&#xff0c;而不是进行&#…...

公司网站建设的/网站seo应用

1 视频文件作为网络模型的输入数据 越来越多的神经网络模型开始以视频作为训练数据&#xff0c;比如基于视频数据的行为识别等等&#xff0c;这就需要我们将视频转换为可适用的张量&#xff0c;本文将以pytorch为例&#xff0c;展示一下视频数据转换为pytorch tensor的过程。 …...