代码详解:Python虚拟环境的原理及使用!

用Python和虚幻引擎打造一个虚拟人的原理和源码 该程序可以通过Python脚本控制虚拟人的动作,并利用UnrealCV库中的功能以及其他必要的库,例如OpenCV和NumPy,进行虚拟人的视觉感知和决策。完成这些步骤后,便可以创建一个虚拟人程序,它可以通过Python和虚幻引擎进行控制并与用户进行交互。虚拟人可以在虚幻引擎中被可视化,可以通过Python脚本进行控制并且可以进行视觉感知和决策。创建虚拟环境,以便在其中运行应用程序,并安装必要的库,如OpenCV、NumPy和PyQt5,在Python和虚幻引擎中。首先,需要安装Python和虚幻引擎。 阅读详情

 

 

 

 

 

依附之门:“放弃进入这里的所有希望。”

插图:Gustave Doré

Python的虚拟环境极大地方便了人们的生活。本指南先介绍虚拟环境的基础知识以及使用方法,然后再深入介绍虚拟环境背后的工作原理。

注意:本指南在macOS Mojave系统上使用最新版本的Python 3.7.x。

1. 为什么使用虚拟环境?

虚拟环境为一系列潜在问题提供简单的解决方案,尤其是在以下几个方面:

  • 允许不同的项目使用不同版本的程序包,从而解决依赖性问题。例如,可以将Project A v2.7用于Project X,并将Package A v1.3用于Project Y。
  • 通过捕获需求文件中的所有包依赖项,使项目自包含且可重现。
  • 在没有管理员权限的主机上安装软件包。
  • 只需要一个项目,无需在系统范围内安装软件包,就能保持全局site-packages /目录整洁。

听起来很方便,不是吗?开始构建更复杂的项目并与其他人协作时,虚拟环境的重要性会凸显出来。很多数据科学家也需要熟悉虚拟环境中与多语言相关的Conda环境。

可按照先后次序来使用!

2. 什么是虚拟环境?

到底什么是虚拟环境?

虚拟环境是用于依赖项管理和项目隔离的Python工具,允许Python站点包(第三方库)安装在本地特定项目的隔离目录中,而不是全局安装(即作为系统范围内的Python的一部分)。

这听起来不错,但到底什么是虚拟环境呢?虚拟环境只是一个包含三个重要组件的目录:

  • 安装了第三方库的site-packages /文件夹。
  • 系统上安装的Python可执行文件的symlink符号链接。
  • 确保执行Python代码的脚本使用在给定虚拟环境中安装的Python解释器和站点包。

最后一点在于会发生一些意想不到的错误,稍后会讲这一点,但现在先看看在实际中如何实际使用虚拟环境。

 

 

 

 

但丁《神曲·地狱篇》第六章—维吉尔安抚Cerberus

插图:Gustave Doré

3. 使用虚拟环境

(1) 创造虚拟环境

假设想要为正在处理的项目创建一个名为test-project/的虚拟环境,该项目具有以下目录树:

test-project/    Python学习交流群:1004391443
├── data         
├── deliver           # Final analysis, code, & presentations 
├── develop           # Notebooks for exploratory analysis 
├── src               # Scripts & local project modules 
└── tests 

需要执行venv模块,它是Python标准库的一部分。

% cd test-project/ 
% python3 -m venv venv/       # Creates an environment called venv/ 

注意:可使用不同的环境名称替换“venv/”。

瞧!虚拟环境诞生了。现在项目变成:

test-project/ 
├── data        
├── deliver      
├── develop      
├── src      
├── tests    
└── venv                 # There it is! 

提醒:虚拟环境本身就是一个目录。

唯一要做的事情是通过运行前面提到的脚本来“激活”环境。

% source venv/bin/activate              
(venv) %                               # Fancy new command prompt 

现在我们位于活动的虚拟环境中(由命令提示符指示,前缀为活动环境的名称)。

我们会像往常一样处理项目,确保项目与系统的其他部分完全隔离。在虚拟环境中,我们无法访问系统范围的站点包,并且无法在虚拟环境之外访问安装包。

完成项目工作时,可以通过以下代码退出环境:

(venv) % deactivate 
%                                    # Old familiar command prompt 

(2) 安装包

默认情况下,只在新环境中安装pip和setuptools。

(venv) % pip list                    # Inside an active environmentPackage    Version 
---------- ------- 
pip        19.1.1 
setuptools 40.8.0 

如果想要安装第三方库的特定版本,比如numpyv1.15.3,可像往常一样使用pip。

(venv) % pip install numpy==1.15.3 
(venv) % pip listPackage    Version 
---------- ------- 
numpy      1.15.3 
pip        19.1.1 
setuptools 40.8.0 

现在可在脚本或活动的Python shell中导入numpy。例如,假设项目包含以下几行脚本tests / imports-test.py。

#!/usr/bin/env python3 
import numpy as np 

直接从命令行运行这个脚本时,可得到:

(venv) % tests/imports-test.py            
(venv) %                                 # Look, Ma, no errors! 

成功。脚本导入numpy没有故障。

 

 

 

 

但丁和Virgil穿过Styx河—但丁《神曲·地狱篇》第八章

插图:Gustave Doré

4. 管理环境

(1) 需求文件

使我们的工作成果可被他人重新使用的最简单方法是在项目的根目录(顶层目录)中加入一个需求文件。为此,需要运行pip freeze,以下列出已安装的第三方软件包及其版本号:

(venv) % pip freeze 
numpy==1.15.3 

并将输出写入文件,我们称之为requirements.txt。

(venv) % pip freeze > requirements.txt 

更新软件包或安装新软件包时,都可使用相同的命令重写需求文件。

现在,任何共享项目的人都可以使用requirements.txt文件,通过复制环境以在系统上运行项目。

(2) 复制环境

等等——究竟是怎么做到的?

想象一下,我们的队友Sara从团队的GitHub存储库中删除了测试项目。在她的系统上,项目的目录树如下所示:

test-project/ 
├── data         
├── deliver      
├── develop      
├── requirements.txt 
├── src    
└── tests 

注意到有点不寻常的东西了吗?是的,没错!没有venv /文件夹。

我们已经将它从团队的GitHub存储库中删除,因为它的存在可能会引起麻烦。

这就是使用requirements.txt文件对复制项目代码至关重要的一个原因。

要在机器上运行测试项目,Sara需要做的就是在项目的根目录中创建一个虚拟环境:

Sara% cd test-project/ 
Sara% python3 -m venv venv/ 

并使用pip install -r requirements.txt将项目的依赖项安装在活动的虚拟环境中。

Sara% source venv/bin/activate 
(venv) Sara% pip install -r requirements.txt 
Collecting numpy==1.15.3 (from -r i (line 1)) 
Installing collected packages: numpy 
Successfully installed numpy-1.15.3 

现在,Sara系统上的项目环境与我们的系统完全相同。很整洁,不是吗?

(3) 故障排除

可惜事情并不总是按计划进行,总会遇到一些问题。也许错误地更新了特定的站点包后发现自己处于Dependency Hell的第九级,无法运行单行项目代码。也许它没那么糟糕,可能你会发现自己竟处于第七级。

无论你发现自己处于何种程度,解决问题并再次看到希望的最简单方法是重新创建项目的虚拟环境。

% rm -r venv/                           # Nukes the old environment 
% python3 -m venv venv/                 # Makes a blank new one 
% pip install -r requirements.txt       # Re-installs  

大功告成,多亏了requirements.txt文件,又恢复了正常。然而另一个原因是始终要在项目中列入需求文件。

 

 

 

 

但丁与冰中的叛徒对话——但丁《神曲·地狱篇》第32章

插图:Gustave Doré

5. 虚拟环境如何做到这一点?

想了解更多有关虚拟环境的信息吗?比如,活动环境如何使用正确的Python解释程序并如何找到合适的第三方库?

(1) echo $ PATH

这一切都归结为PATH的价值,它告诉shell使用什么Python实例以及在哪里寻找网站包。在基础shell中,PATH看起来或多或少是这样表现的。

% echo $PATH 
/usr/local/bin:/usr/bin:/usr/sbin:/bin:/sbin 

调用Python解释器或运行.py脚本时,shell会按顺序搜索PATH中列出的目录,直到遇到Python实例。要查看PATH首先找到的Python实例,请运行which python3。

% which python3 
/usr/local/bin/python3                 # Your output may differ 

通过站点模块(这是Python标准库的一部分)查找此Python实例查找站点包的位置也很容易。

% python3                           # Activates a Python shell 
>>> import site                       
>>> site.getsitepackages()          # Points to site-packages folder['/usr/local/Cellar/python/3.7.3/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages'] 

运行脚本venv / bin / activate修改PATH,以便shell在搜索系统的全局二进制文件之前搜索项目的本地二进制文件。

% cd ~/test-project/ 
% source venv/bin/activate 
(ven) % echo $PATH~/test-project/venv/bin:/usr/local/bin:/usr/bin:/usr/sbin:/bin:/sbin 

现在shell知道如何使用项目的本地Python实例:

(venv) % which python3 
~/test-project/venv/bin/python3 

在哪里可以找到项目的本地站点包?

(venv) % python3 
>>> import site 
>>> site.getsitepackages()['~/test-project/venv/lib/python3.7/site-packages']    # Ka-ching 

(2) 理智检查

还记得以前的tests / imports-test.py脚本吗?看起来是下面这样:

#!/usr/bin/env python3 
import numpy as np  

我们能够在活动环境中运行此脚本,不出现任何问题,是因为环境中的Python实例能够访问项目的本地站点包。

如果运行从项目的虚拟环境外部而来的相同脚本会发生什么?

% tests/imports-test.py                # Look, no active environmentTraceback (most recent call last): 
  File "tests/imports-test.py", line 3, in <module> 
    import numpy as npModuleNotFoundError: No module named 'numpy' 

是的,出现了一个错误,但我们应该这样做。如果我们不这样做,那就意味着我们能够从项目外部访问项目的本地站点包,从而破坏了拥有虚拟环境的整个目的。出现错误的事实证明我们的项目与系统的其他部分完全隔离。

(3) 环境的目录树

有一件事可以帮助整理所有这些信息,即清楚地了解环境目录树的外观。

test-project/venv/               # Our environment's root directory 
├── bin 
│   ├── activate                           # Scripts to activate 
│   ├── activate.csh                       # our project's 
│   ├── activate.fish                      # virtual environment. 
│   ├── easy_install 
│   ├── easy_install-3.7 
│   ├── pip 
│   ├── pip3 
│   ├── pip3.7 
│   ├── python -> /usr/local/bin/python    # Symlinks to system-wide 
│   └── python3 -> python3.7               # Python instances. 
├── include 
├── lib 
│   └── python3.7 
│       └── site-packages              # Stores local site packages 
└── pyvenv.cfg 

 

Python 虚拟环境工具及使用总结 Miniconda 是Anaconda的一个轻量级版本,只包括conda和其依赖,其他包需要手动安装。的原理是基于 Python 的模块化机制,通过创建一个独立的 Python 环境来实现虚拟化。是一个创建隔离的Python环境的工具。它可以创建一个包含指定版本Python解释器的环境,并可以安装独立的库和依赖。conda是一个开源包管理系统和环境管理系统,可以用于安装、运行和升级包和它们的依赖。的一个扩展,提供了更易于管理虚拟环境的命令行工具。创建一个新的虚拟环境,myenv 是新虚拟环境的名称,如下, 阅读详情

相关推荐

VFIO框架源码分析(二十二)- IOMMUFD 的脏页跟踪与 Dirty Bits 读取

在虚拟化热迁移(Live Migration)的场景中,脏页追踪(Dirty Page Tracking)是最具挑战性的环节之一。它的核心任务是实时捕获设备(DMA)对内存的写操作,以便 VMM(如 QEMU)知道哪些内存页需要被重新传输到目标主机。在强耦合与粗粒度:脏页追踪是绑定在 Container 上的。这意味着,如果一个 Container 内有多个设备,哪怕只有一个设备在写内存,脏页追踪也会影响 Container 内的所有设备。软件模拟开销大。

qq_36071928的博客 1046

python换衣服_GAN入门:5分钟学会行人换衣生成

前几天英伟达开源了DG-Net的源码。让我们来回顾一下这篇CVPR19 Oral的论文。论文是英伟达(NVIDIA), 悉尼科技大学(UTS), 澳大利亚国立大学(ANU)的研究人员 在CVPR19上口头报告的文章《 Joint Discriminative and Generative Learning for Person Re-identification》。 深度学习模型训练时往往需要大量...

weixin_39622521的博客 1821

MATLAB机械臂轨迹规划:在关节空间中生成多项式轨迹以及 jtraj函数(内容超详细讲解)

matlab机器人仿真,关节空间多项式轨迹生成

qq_40969179的博客 1万+

代码详解:Python虚拟环境的原理及使用 !

Python的虚拟环境极大地方便了人们的生活。本指南先介绍虚拟环境的基础知识以及使用方法,然后再深入介绍虚拟环境背后的工作原理。 注意:本指南在macOS Mojave系统上使用最新版本的Python 3.7.x。 Python学习交流群:1004391443 目录 · 为什么使用虚拟环境? · 什么是虚拟环境? · 使用虚拟环境 · 管理环境 · 虚拟环境如...

Pythoncxy的博客 750

银河麒麟V10离线安装VLC播放器:依赖处理与3.0.9.2版本实操指南

在国产化操作系统日益普及的背景下,软件安装方式成为政企内网用户关注的重点。离线安装作为一种不依赖公网源的部署手段,常用于解决内网环境下的软件获取问题。其核心在于理解Linux包管理机制,如dpkg与apt对依赖关系的处理逻辑。掌握这一原理,不仅能应对多媒体软件的部署,也能提升系统维护效率。VLC作为跨平台多媒体播放器,凭借强大的解码能力与协议支持,广泛应用于本地视频播放、RTSP拉流及监控大屏等场景。本文从离线安装的通用概念出发,结合银河麒麟V10桌面版的实际环境,详细梳理了VLC 3.0.9.2离线包的获

weixin_32247165的博客 376

解密网页视频Blob链接:从防盗链到流媒体分片技术

本文深入解析了网页视频中Blob链接的工作原理,揭示了其作为现代视频防盗链与流媒体分片技术核心的本质。文章详细阐述了Blob对象与Media Source API如何协同工作,将视频数据分片传输,并结合HTML5的video元素实现安全、流畅的播放体验,有效提升了资源保护能力。

c7d8e的博客 317

python库安装原理_还在为基础环境困扰?一文读懂Python机器学习库的打包安装原理...

尽管依赖问题非常棘手,但明白包管理以及包编译安装原理有助于我们深刻理解计算机基本原理,避免成为一个调包侠。最近在一台GPU机器上安装了LightGBM,主要是希望LightGBM能够利用GPU的算力进行加速,中间遇到GPU驱动以及CUDA等问题,断断续续持续了一个月才完全使其正常运行。为了彻底弄明白Python打包和安装依赖的问题,我下载了LightGBM、TensorFlow等机器学习库的源码,...

weixin_39685762的博客 450

国产麒麟系统PXE安装-UEFI引导

注意: 适用uefi引导 适用x86_64架构 一键部署脚本扣我 1.上传ISO到PXE服务器,拷贝ISO文件 # mkdir /kylin_iso # mount -o loop Kylin-Server-10-SP1-Release-Build04-20200711-x86_64.iso /kylin_iso/ 2.配置http,获取安装源 # yum -y install httpd # mkdir /var/www/html/{ks,kylin} # 注意一定是"/kylin_iso/

河静 5056

程序猿重要知识点!代码详解:Python虚拟环境的原理及使用

1. 使用JMH 通过手工编写一个性能压测程序有较多的问题 不同需要性能比较方法放到一个虚拟机里调用,有可能会互相影响。最好的办法是分成俩个独立的进程运行,确保俩个对比方法不相互影响。 PerformaceAreaTest启动后直接运行, 缺少预热代过程。虚拟机在执行代码过程中,会加载类,解释执行,以及有可能的优化编译。需要确保虚拟机进行了一定预热运行,以保证测试的公平性,我们在运行Perform...

xuchaoyezi的博客 359

DeepLabv3+改进专栏

🔥【DeepLabv3+改进专栏!探索语义分割新高度】🌟 你是否在为图像分割的精度与效率发愁?📢 本专栏重磅推出:✅ 独家改进策略:融合注意力机制、轻量化设计与多尺度优化✅ 即插即用模块:ASPP+升级、解码器。

AIcurator的博客 2576

第02章:HSA-Runtime架构概览

摘要: 本章深入解析HSA Runtime的三层架构设计,包括公共API层(C语言接口)、核心实现层(C++业务逻辑)和驱动抽象层(硬件交互)。重点介绍了Runtime的核心组件(Agent、Queue、Signal、Memory)及其关系,以及初始化流程、配置选项和调试功能。通过学习,读者将掌握HSA Runtime的整体架构,为后续模块学习奠定基础。

图形/计算GPU的驱动与虚拟化技术分享园地 2928

python的虚拟环境图文详解(虚拟环境作用以及虚拟环境搭建,切换,退出,迁移打包)代码演示

Python的虚拟环境可以使一个Python程序拥有独立的库library和解释器interpreter,而不用与其他Python程序共享统一个library和interpreter。虚拟环境的好处是避免了不同Python程序间的互相影响,pycharm点点点,相比命令行操作方式比较友好,但是建议也学习下命令行方式,如果需要登陆服务器,可能只能使用命令行来操作。

weixin_45440484的博客 2万+

Google Earth Engine(GEE)——全球影像数据正确下载方式和注意事项

今天看到有人担心全球影像能不能下载的问题? 有时候我们会用到全球的数据,但是如何下载全球的数据呢? 首先如果没有全球的矢量边界我们会不会无法下载全球的数据,答案当然是可以的,因为我们在边界筛选的过程中filterBounds(),就是为了筛选边界,当我们不进行边界筛选的时候,自然而然默认的边界范围就是全球的,但是紧接着会面临其他两个问题:1如何下载?2如何在不缩小分辨率的情况下下载成功? 对于第一个问题我们如何下载?还是按照正常的逻辑利用export直接倒出到Google硬盘当中, 代码:

此星光明博客 3772

python虚拟环境使用详解

poetry config virtualenvs.create --local --unset 执行后当前项目配置中的virtualenvs.create的值被重置。2、安装最新包指定为开发依赖,会写到pyproject.toml中的[tool.poetry.dev-dependencies]1、安装poetry.lock(如果存在)/pyproject.toml文件中的全部依赖。2、新建的项目,还没有pyproject.toml文件和虚拟环境。pipenv uninstall 包名。

lIujunXHU的博客 1万+

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

代码详解:Python虚拟环境的原理及使用

本文转载自公众号“读芯术”(ID:AI_Discovery)依附之门:“放弃进入这里的所有希望。”插图:Gustave DoréPython的虚拟环境极大地方便了人们的生活。本指南先...

机器学习算法与Python学习 491

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

详解Python虚拟环境的原理及使用

本文先介绍虚拟环境的基础知识以及使用方法,然后再深入介绍虚拟环境背后的工作原理。(环境:在macOS Mojave系统上使用最新版本的Python 3.7.x) 目录 1. 为什么使用虚拟环境? 2. 什么是虚拟环境? 3. 使用虚拟环境 4. 管理环境 5. 虚拟环境如何做到这一点? 1. 为什么使用虚拟环境? 虚拟环境为一系列潜在问题提供简单的解决方案,尤其是在以下几个方面: 允许不同的项目使用不同版本的程序包,从而解决依赖性问题。例如,可以将Project A v2.7用于Pro

码农-Vax天道的时间宝藏 1463

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

Python3入门之——Python虚拟环境的原理及使用详解

Python的虚拟环境极大地方便了人们的生活。本指南先介绍虚拟环境的基础知识以及使用方法,然后再深入介绍虚拟环境背后的工作原理。注意:本指南在macOS Mojave系统上使用最新版本的Python 3.7.x。 1. 为什么使用虚拟环境? 虚拟环境为一系列潜在问题提供简单的解决方案,尤其是在以下几个方面: 允许不同的项目使用不同版本的程序包,从而解决依赖性问题。例如,可以将Project A v2.7用于Project X,并将Package A v1.3用于Project Y。 通过捕获需求文件中的所

肥叔菌的博客 2418

python虚拟环境解析_代码详解:Python虚拟环境的原理及使用

原标题:代码详解:Python虚拟环境的原理及使用全文共5308字,预计学习时长20分钟或更长 依附之门:“放弃进入这里的所有希望。”插图:Gustave DoréPython的虚拟环境极大地方便了人们的生活。本指南先介绍虚拟环境的基础知识以及使用方法,然后再深入介绍虚拟环境背后的工作原理。注意:本指南在macOS Mojave系统上使用最新版本的Python 3.7.x。 目录· 为什么使用虚拟...

weixin_39830303的博客 187

python 虚拟环境原理_代码详解:Python虚拟环境的原理及使用

image依附之门:“放弃进入这里的所有希望。” 插图:Gustave DoréPython的虚拟环境极大地方便了人们的生活。本指南先介绍虚拟环境的基础知识以及使用方法,然后再深入介绍虚拟环境背后的工作原理。注意:本指南在macOS Mojave系统上使用最新版本的Python 3.7.x。image目录· 为什么使用虚拟环境?· 什么是虚拟环境?· 使用虚拟环境· 管理环境· 虚拟环境如何运行?...

weixin_39701861的博客 166

python 虚拟环境原理_Python虚拟环境的原理及使用最全详解,快来看看吧!

本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理以下文章来源于腾讯云 作者:昱良本文先介绍虚拟环境的基础知识以及使用方法,然后再深入介绍虚拟环境背后的工作原理。(环境:在macOS Mojave系统上使用最新版本的Python 3.7.x)目录为什么使用虚拟环境?什么是虚拟环境?使用虚拟环境管理环境虚拟环境如何运行?1. 为什么使...

weixin_39867296的博客 334

conda 删除虚拟环境_详解Python虚拟环境的原理及使用

点击 机器学习算法与Python学习 ,选择加星标精彩内容不迷路本文先介绍虚拟环境的基础知识以及使用方法,然后再深入介绍虚拟环境背后的工作原理。(环境:在macOS Mojave系统上使用最新版本的Python 3.7.x)目录为什么使用虚拟环境?什么是虚拟环境?使用虚拟环境管理环境虚拟环境如何运行?1. 为什么使用虚拟环境?虚拟环境为一系列潜在问题提供简单的解决方案,尤其是在以下几个方...

weixin_39747075的博客 936
上一篇: 使用Python中的卷积神经网络进行恶意软件检测 !
下一篇: Python 踩坑之旅进程篇其五打不开的文件!
普通网友
博客等级 码龄7年 438粉丝 263原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值