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

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

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

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

 

 

 

Python学习交流群:1004391443

目录

· 为什么使用虚拟环境?

· 什么是虚拟环境?

· 使用虚拟环境

· 管理环境

· 虚拟环境如何运行?

 

 

 

 

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. 使用虚拟环境

 

创造虚拟环境

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

test-project/

├── 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

安装包

默认情况下,只在新环境中安装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. 管理环境

 

需求文件

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

(venv) % pip freeze
numpy==1.15.3

 

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

(venv) % pip freeze > requirements.txt

 

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

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

复制环境

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

想象一下,我们的队友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系统上的项目环境与我们的系统完全相同。很整洁,不是吗?

故障排除

可惜事情并不总是按计划进行,总会遇到一些问题。也许错误地更新了特定的站点包后发现自己处于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 dependencies

 

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

 

 

 

 

 

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

插图:Gustave Doré

 

 

 

 

 

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

 

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

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

理智检查

还记得以前的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'

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

环境的目录树

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

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 是新虚拟环境的名称,如下, 阅读详情

相关推荐

基于cat12搞定SBM的ROI的统计分析——vertex水平和ROI水平的双样本T检验

前言 一、Atlas皮层图谱介绍 二、SBM分析——主要以皮层四种常用指标中的厚度(thickness)和沟深(depth)为主

Sophia2023的博客 8755

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

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

weixin_39622521的博客 1821

5分钟搞懂SCMA:稀疏码多址接入的核心原理与实战应用

本文深入浅出地解析了SCMA(稀疏码多址接入)的核心原理与实战应用。通过对比传统正交多址技术,阐释了SCMA如何通过非正交叠加和稀疏码本设计,实现远超资源单元数的用户接入,从而有效应对5G海量机器通信(mMTC)的挑战。文章还探讨了其在上行海量连接、免授权接入等场景的应用潜力及工程实现中的关键考量。

zeta9的博客 265

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

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

weixin_39685762的博客 450

OB4.X集群状态running但是oceanbase-ce is not running

自 V3.2.0 起,若 obd 设置了加密密钥,执行 display 命令输出的集群信息中,密码相关内容为加密状态。若需输出明文密码,可在命令中添加 --epk/–encryption-passkey 指定密钥用于验证。obd 运维的数据库,启停需要使用obd进行操作,停机时候没有使用obd会导致集群状态running但是oceanbase-ce is not running。查看集群中的租户时无租户反馈,警告oceanbase-ce is not running,但是查询集群状态明明是running。

qq961573863的博客 1216

Python 第三方库安装技巧

为什么80%的码农都做不了架构师?>>> ...

weixin_33860553的博客 223

Canoe主要功能的详细介绍

CANoe是德国Vetor公司推出的一款用于总线开发的设备,全程为CAN open environment。后来随着总线技术的发展,CANoe不仅限于CAN类型的总线开发,还包含LIN、FlexRay、MOST和以太网等开发。在车载网络和ECU开发、测试和分析方面,CANoe几乎长期占据着垄断地位,当然是因为其强大的功能性了。目前用这个工具的主要是整车厂和供应商的网络设计工程是、开发工程师和测试工程师。小编当时安装CANoe的时候也是花了一定的时间和精力,好在没有崩溃。

车载测试 3726

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

依附之门:“放弃进入这里的所有希望。” 插图:Gustave Doré Python的虚拟环境极大地方便了人们的生活。本指南先介绍虚拟环境的基础知识以及使用方法,然后再深入介绍虚拟环境背后的工作原理。 注意:本指南在macOS Mojave系统上使用最新版本的Python 3.7.x。 1. 为什么使用虚拟环境? 虚拟环境为一系列潜在问题提供简单的解决方...

Pythoncxy的博客 656

用STM32F103单片机控制电调制动无刷电机

用电调控制无刷电机制作遥控飞艇 蓝牙控制 调控电调 无刷电机 用电调控制无刷电机制作遥控飞艇 代码区 mian.c #include "delay.h" #include "sys.h" #include "usart.h" #include "usart3.h" #include "timer.h" #include "led.h" #include "key.h" int main(v...

子非鱼 的博客 2万+

告别时钟树平衡噩梦:在Innovus中巧妙设置stop/ignore pin来优化分段时钟网络

本文深入探讨了在Innovus工具中利用stop/ignore pin优化分段时钟树网络的高阶技巧。针对数字IC后端设计中的时钟树平衡难题,详细解析了特殊引脚属性的战略应用场景和配置方法,帮助工程师有效解决SoC设计中复杂的时钟结构问题,显著提升时序收敛效率。

weixin_30836759的博客 294

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

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

xuchaoyezi的博客 359

Microsemi Libero使用技巧1——查看芯片资源占用情况

Microsemi Libero使用技巧——查看芯片资源占用情况 前言 与MCU不同,FPGA的资源主要包括:逻辑资源,IO资源,Flash大小,PLL资源,SoC硬核处理器资源等,其中逻辑资源和IO资源是我们主要关心的,本篇文章将介绍,如何通过Microsemi Libero IDE来查看工程的详细资源占用情况。 A2F200M3F的资源 以Microsemi SmartFusion系列A2F2...

whik1194的博客 5698

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

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

weixin_45440484的博客 2万+

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

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万+

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

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

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

机器学习算法与Python学习 491

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

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

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

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

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
上一篇: 一个简单的案例带你了解支持向量机算法(Python代码)!
下一篇: 如何使用python进行数据表的合并 !
普通网友
博客等级 码龄7年 438粉丝 263原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值