diff --git a/Python的学习笔记(flora.chen).docx b/Python的学习笔记(flora.chen).docx new file mode 100644 index 0000000..c1ca21a Binary files /dev/null and b/Python的学习笔记(flora.chen).docx differ diff --git a/Python的学习笔记(flora.chen).pdf b/Python的学习笔记(flora.chen).pdf new file mode 100644 index 0000000..01576f4 Binary files /dev/null and b/Python的学习笔记(flora.chen).pdf differ diff --git a/README.txt b/README.txt new file mode 100644 index 0000000..170d337 --- /dev/null +++ b/README.txt @@ -0,0 +1,2 @@ +这是在柠檬班学习python自动化测试的所有笔记以及练习代码。 +留待以后参考。 \ No newline at end of file diff --git a/pytest+allure学习笔记(florachen).docx b/pytest+allure学习笔记(florachen).docx new file mode 100644 index 0000000..43a16fb Binary files /dev/null and b/pytest+allure学习笔记(florachen).docx differ diff --git a/pytest+allure学习笔记(florachen).pdf b/pytest+allure学习笔记(florachen).pdf new file mode 100644 index 0000000..b4a4dc3 Binary files /dev/null and b/pytest+allure学习笔记(florachen).pdf differ diff --git a/python27Class/unitTest/class03122020/README.txt b/python27Class/unitTest/class03122020/README.txt new file mode 100644 index 0000000..ae95e14 --- /dev/null +++ b/python27Class/unitTest/class03122020/README.txt @@ -0,0 +1,14 @@ +课程内容: +logging日志模块 +demo1.logLevel.py +demo1.logCollect.py +demo1.logInputToController.py +demo1.logInputToFile.py +demo1.customizedLogCollect.py +demo1.logRotating.py + +封装日志收集 +demo2.handleLogging.py +demo2.test_logging.py + + diff --git a/python27Class/unitTest/class03122020/demo1/customizedLogCollect.py b/python27Class/unitTest/class03122020/demo1/customizedLogCollect.py index 5c9e9e3..c67242e 100644 --- a/python27Class/unitTest/class03122020/demo1/customizedLogCollect.py +++ b/python27Class/unitTest/class03122020/demo1/customizedLogCollect.py @@ -24,6 +24,14 @@ sh.setLevel('WARNING') log.addHandler(sh) # 第四步:设置输出格式 +# 日志输出格式 +formats='%(asctime)s ---%(name)s--- [%(filename)s-->line:%(lineno)d] - %(levelname)s: %(message)s' +# 创建一个日志输出格式对象 +form = logging.Formatter(formats) +# 将日志输出格式对象添加到输出渠道 +fh.setFormatter(form) +sh.setFormatter(form) +# 输出日志 log.error('-------------error------------') log.warning('-------------info------------') @@ -31,4 +39,9 @@ log.warning('-------------info------------') 输出日志 注意点:自定义的日志收集器收集日志要使用收集器去记录.不能直接使用logging去记录。 这是默认使用logging收集器去记录的:logging.error('-------------error------------') + +日志输出格式: +%(name)s:收集器名称 +%(levelno)s:打印日志级别的数值 + """ \ No newline at end of file diff --git a/python27Class/unitTest/class03122020/demo1/floraLog.log b/python27Class/unitTest/class03122020/demo1/floraLog.log new file mode 100644 index 0000000..c251318 --- /dev/null +++ b/python27Class/unitTest/class03122020/demo1/floraLog.log @@ -0,0 +1,9 @@ + +2020-03-12 21:24:54,985 - [customizedLogCollect.py-->line:34] - ERROR: -------------error------------ +2020-03-12 21:24:54,985 - [customizedLogCollect.py-->line:35] - WARNING: -------------info------------ +2020-03-12 21:25:34,945 ---floraLog--- [customizedLogCollect.py-->line:34] - ERROR: -------------error------------ +2020-03-12 21:25:34,945 ---floraLog--- [customizedLogCollect.py-->line:35] - WARNING: -------------info------------ +2020-03-12 21:25:44,711 ---floraLog- [customizedLogCollect.py-->line:34] - ERROR: -------------error------------ +2020-03-12 21:25:44,711 ---floraLog- [customizedLogCollect.py-->line:35] - WARNING: -------------info------------ +2020-03-12 21:25:50,259 ---floraLog--- [customizedLogCollect.py-->line:34] - ERROR: -------------error------------ +2020-03-12 21:25:50,259 ---floraLog--- [customizedLogCollect.py-->line:35] - WARNING: -------------info------------ diff --git a/python27Class/unitTest/class03122020/demo1/log.log b/python27Class/unitTest/class03122020/demo1/log.log new file mode 100644 index 0000000..a7c2e3b --- /dev/null +++ b/python27Class/unitTest/class03122020/demo1/log.log @@ -0,0 +1,2 @@ +2020-03-12 21:48:50,082 ---floraLog--- [logRound.py-->line:66] - ERROR: -------------error------------ +2020-03-12 21:48:50,082 ---floraLog--- [logRound.py-->line:67] - WARNING: -------------info------------ diff --git a/python27Class/unitTest/class03122020/demo1/logCollect.py b/python27Class/unitTest/class03122020/demo1/logCollect.py new file mode 100644 index 0000000..b85efe6 --- /dev/null +++ b/python27Class/unitTest/class03122020/demo1/logCollect.py @@ -0,0 +1,22 @@ +""" +================================= +Author: Flora Chen +Time: 2020/3/12 20:09 +-_- -_- -_- -_- -_- -_- -_- -_- +================================= +""" +import logging + + +# 创建日志收集器(如果不传参数name,会返回默认的日志收集器root) +my_log = logging.getLogger() + +# 设置日志收集等级 +my_log.setLevel('DEBUG') + +logging.debug('这是一条DEBUG级别的日志') +logging.info('这是一条INFO级别的日志') +logging.error('这是一条ERROR级别的日志') +logging.warning('这是一条WARNING级别的日志') +logging.critical('这是一条CRITICAL级别的日志') + diff --git a/python27Class/unitTest/class03122020/demo1/logInputToController.py b/python27Class/unitTest/class03122020/demo1/logInputToController.py new file mode 100644 index 0000000..d0d4b99 --- /dev/null +++ b/python27Class/unitTest/class03122020/demo1/logInputToController.py @@ -0,0 +1,38 @@ +""" +================================= +Author: Flora Chen +Time: 2020/3/12 20:45 +-_- -_- -_- -_- -_- -_- -_- -_- +================================= +""" +""" +================================= +Author: Flora Chen +Time: 2020/3/12 20:09 +-_- -_- -_- -_- -_- -_- -_- -_- +================================= +""" +import logging + + +# 创建日志收集器(如果不传参数name,会返回默认的日志收集器root) +my_log = logging.getLogger() + +""" +日志输出渠道: +1、输出到控制台 +2、输出到文件 +""" + +# 创建一个输出到控制台的输出渠道 +sh = logging.StreamHandler() +# 设置输出渠道的输出等级 +sh.setLevel('ERROR') +# 将输出渠道和日志收集器绑定 +my_log.addHandler(sh) + +logging.debug('这是一条DEBUG级别的日志') +logging.info('这是一条INFO级别的日志') +logging.error('这是一条ERROR级别的日志') +logging.warning('这是一条WARNING级别的日志') +logging.critical('这是一条CRITICAL级别的日志') \ No newline at end of file diff --git a/python27Class/unitTest/class03122020/demo1/logInputToFile.py b/python27Class/unitTest/class03122020/demo1/logInputToFile.py new file mode 100644 index 0000000..f926a0e --- /dev/null +++ b/python27Class/unitTest/class03122020/demo1/logInputToFile.py @@ -0,0 +1,42 @@ +""" +================================= +Author: Flora Chen +Time: 2020/3/12 20:45 +-_- -_- -_- -_- -_- -_- -_- -_- +================================= +""" +""" +================================= +Author: Flora Chen +Time: 2020/3/12 20:09 +-_- -_- -_- -_- -_- -_- -_- -_- +================================= +""" +import logging + + +# 创建日志收集器(如果不传参数name,会返回默认的日志收集器root) +my_log = logging.getLogger() + +""" +日志输出渠道: +1、输出到控制台 +2、输出到文件 +""" + +# 创建一个输出到文件的输出渠道(参数1:文件的路径;参数2:编码格式) +# 注意如果文件不存在会自动创建,如果已经存在,默认会追加写入 +fh = logging.FileHandler('log.log', encoding='utf-8') +# 设置输出渠道的输出等级 +fh.setLevel('DEBUG') +# 将输出渠道和日志收集器绑定 +my_log.addHandler(fh) + +logging.debug('这是一条DEBUG级别的日志') +logging.info('这是一条INFO级别的日志') +logging.error('这是一条ERROR级别的日志') +logging.warning('这是一条WARNING级别的日志') +logging.critical('这是一条CRITICAL级别的日志') + +# 注意:如果收集的等级高于输出的等级,那么只能按照已收集的等级输出。 +# 例如收集是从error开始收集,输出是从debug输出,那么debug跟info的等级是无法输出的。 \ No newline at end of file diff --git a/python27Class/unitTest/class03122020/demo1/logLevel.py b/python27Class/unitTest/class03122020/demo1/logLevel.py new file mode 100644 index 0000000..da8198e --- /dev/null +++ b/python27Class/unitTest/class03122020/demo1/logLevel.py @@ -0,0 +1,25 @@ +""" +================================= +Author: Flora Chen +Time: 2020/3/12 20:45 +-_- -_- -_- -_- -_- -_- -_- -_- +================================= +""" +import logging +""" +# 以下是日志的5个等级 +# CRITICAL > WARNING> ERROR > INFO > DEBUG +# debug:输出详细的运行情况,主要用于调试 +# info:确认一切按预期运行,一般用于输出重要运行情况 +# error:一些意向不到的事情发生了(比如:‘警告:内存空间不足’),但是这个软件还能按照预期工作,在不久的将来会出现问题 +# warning:发生了错误,软件没能执行一些功能,还可以继续执行 +# critical:一个严重的错误,表明程序本身可能无法进行运行 +# 注意:这5个等级对应5种打日志的方法,默认是warning, 当在warning或之上时才被跟踪 +logging模块默认的日志收集器(root), 收集的是warning及以上等级的日志 +""" + +logging.debug('这是一条DEBUG级别的日志') +logging.info('这是一条INFO级别的日志') +logging.error('这是一条ERROR级别的日志') +logging.warning('这是一条WARNING级别的日志') +logging.critical('这是一条CRITICAL级别的日志') \ No newline at end of file diff --git a/python27Class/unitTest/class03122020/demo1/logRotating.py b/python27Class/unitTest/class03122020/demo1/logRotating.py new file mode 100644 index 0000000..e2662e5 --- /dev/null +++ b/python27Class/unitTest/class03122020/demo1/logRotating.py @@ -0,0 +1,68 @@ +""" +================================= +Author: Flora Chen +Time: 2020/3/12 21:29 +-_- -_- -_- -_- -_- -_- -_- -_- +================================= +""" +""" +日志轮转: +1、通过时间来轮转 +2、通过文件大小来轮转 +""" + +import logging + +# 第一步:创建一个日志收集器,自定义日志收集器名称 +log = logging.getLogger('floraLog') + +# 第二步:设置日志收集器等级 +log.setLevel('DEBUG') + +# 第三步:创建输出渠道 +# 创建一个按时间进行轮转的文件输出渠道 + +""" +(参数1:filename文件名, 参数2:encoding编码格式, 参数3:when轮转的时间单位, 参数4:interval时间间隔, 参数5:backupCount轮转的文件数量) +interval:设置时间间隔 +when:设置间隔单位(默认H) + S:seconds秒 + M:Minutes分钟 + H:Hours小时 + D:Days天 +backupCount:轮转的文件数量 +""" +# from logging.handlers import TimedRotatingFileHandler +# fh = TimedRotatingFileHandler(filename='user.log', +# encoding='utf-8', +# when='S', +# interval=1, +# backupCount=2) +# fh.setLevel('DEBUG') +# log.addHandler(fh) + +# 创建一个按文件大小进行轮转的文件输出渠道 +""" +(参数1:filename文件名, 参数2:encoding编码格式, 参数3:maxBytes设置文件的大小, 参数4:backupCount轮转的文件数量) +maxBytes:设置文件的大小(单位:字节) +backupCount:轮转的文件数量 +""" +from logging.handlers import RotatingFileHandler +fh = RotatingFileHandler(filename='log.log', + encoding='utf-8', + maxBytes=1024*1024*20, + backupCount=7) +fh.setLevel('DEBUG') +log.addHandler(fh) + +# 第四步:设置输出格式 +# 日志输出格式 +formats='%(asctime)s ---%(name)s--- [%(filename)s-->line:%(lineno)d] - %(levelname)s: %(message)s' +# 创建一个日志输出格式对象 +form = logging.Formatter(formats) +# 将日志输出格式对象添加到输出渠道 +fh.setFormatter(form) + +# 输出日志 +log.error('-------------error------------') +log.warning('-------------info------------') diff --git a/python27Class/unitTest/class03122020/demo2/handleLogging.py b/python27Class/unitTest/class03122020/demo2/handleLogging.py new file mode 100644 index 0000000..7e5a2d6 --- /dev/null +++ b/python27Class/unitTest/class03122020/demo2/handleLogging.py @@ -0,0 +1,69 @@ +""" +================================= +Author: Flora Chen +Time: 2020/3/12 21:51 +-_- -_- -_- -_- -_- -_- -_- -_- +================================= +""" +import logging +from logging.handlers import RotatingFileHandler + +def create_logger(): + """ + 日志轮转: + 1、通过时间来轮转 + 2、通过文件大小来轮转 + """ + # 第一步:创建一个日志收集器,自定义日志收集器名称 + log = logging.getLogger('floraLog') + + # 第二步:设置日志收集器等级 + log.setLevel('DEBUG') + + # 第三步:创建输出渠道 + # 创建一个按时间进行轮转的文件输出渠道 + + """ + (参数1:filename文件名, 参数2:encoding编码格式, 参数3:when轮转的时间单位, 参数4:interval时间间隔, 参数5:backupCount轮转的文件数量) + interval:设置时间间隔 + when:设置间隔单位(默认H) + S:seconds秒 + M:Minutes分钟 + H:Hours小时 + D:Days天 + backupCount:轮转的文件数量 + """ + # from logging.handlers import TimedRotatingFileHandler + # fh = TimedRotatingFileHandler(filename='user.log', + # encoding='utf-8', + # when='S', + # interval=1, + # backupCount=2) + # fh.setLevel('DEBUG') + # log.addHandler(fh) + + # 创建一个按文件大小进行轮转的文件输出渠道 + """ + (参数1:filename文件名, 参数2:encoding编码格式, 参数3:maxBytes设置文件的大小, 参数4:backupCount轮转的文件数量) + maxBytes:设置文件的大小(单位:字节) + backupCount:轮转的文件数量 + """ + + fh = RotatingFileHandler(filename='log.log', + encoding='utf-8', + maxBytes=1024 * 1024 * 20, + backupCount=7) + fh.setLevel('DEBUG') + log.addHandler(fh) + + # 第四步:设置输出格式 + # 日志输出格式 + formats = '%(asctime)s ---%(name)s--- [%(filename)s-->line:%(lineno)d] - %(levelname)s: %(message)s' + # 创建一个日志输出格式对象 + form = logging.Formatter(formats) + # 将日志输出格式对象添加到输出渠道 + fh.setFormatter(form) + + return log + +log = create_logger() \ No newline at end of file diff --git a/python27Class/unitTest/class03122020/demo2/log.log b/python27Class/unitTest/class03122020/demo2/log.log new file mode 100644 index 0000000..9db45be --- /dev/null +++ b/python27Class/unitTest/class03122020/demo2/log.log @@ -0,0 +1,2 @@ +2020-03-12 21:54:55,004 ---floraLog--- [test_logging.py-->line:12] - ERROR: ---- +2020-03-12 21:58:15,710 ---floraLog--- [test_logging.py-->line:12] - ERROR: ---- diff --git a/python27Class/unitTest/class03122020/demo2/test_logging.py b/python27Class/unitTest/class03122020/demo2/test_logging.py new file mode 100644 index 0000000..7ecd7d1 --- /dev/null +++ b/python27Class/unitTest/class03122020/demo2/test_logging.py @@ -0,0 +1,12 @@ +""" +================================= +Author: Flora Chen +Time: 2020/3/12 21:54 +-_- -_- -_- -_- -_- -_- -_- -_- +================================= +""" +from python27Class.unitTest.class03122020.demo2.handleLogging import log + + + +log.error('----') \ No newline at end of file diff --git a/python27HomeWork/unitTest/homeWork03072020/demo1/testLogin.py b/python27HomeWork/unitTest/homeWork03072020/demo1/testLogin.py index b21d694..4d00e63 100644 --- a/python27HomeWork/unitTest/homeWork03072020/demo1/testLogin.py +++ b/python27HomeWork/unitTest/homeWork03072020/demo1/testLogin.py @@ -7,8 +7,8 @@ Time: 2020/3/5 20:23 """ import unittest -from python27Class.homeWork.unitTest.homeWork03072020.demo1.ddtNew import ddt, data -from python27Class.homeWork.unitTest.homeWork03072020.demo1.login import login_check +from python27HomeWork.unitTest.homeWork03072020.demo1.ddtNew import ddt, data +from python27HomeWork.unitTest.homeWork03072020.demo1.login import login_check from python27HomeWork.unitTest.homeWork03072020.demo1.readExcel import login_data diff --git a/python27HomeWork/unitTest/homeWork03072020/demo2/testLogin2.py b/python27HomeWork/unitTest/homeWork03072020/demo2/testLogin2.py index 42d0606..08b3f7f 100644 --- a/python27HomeWork/unitTest/homeWork03072020/demo2/testLogin2.py +++ b/python27HomeWork/unitTest/homeWork03072020/demo2/testLogin2.py @@ -7,8 +7,8 @@ Time: 2020/3/5 20:23 """ import unittest -from python27Class.homeWork.unitTest.homeWork03072020.demo2.login import login_check -from python27Class.homeWork.unitTest.homeWork03072020.demo2.readExcel2 import login_data +from python27HomeWork.unitTest.homeWork03072020.demo2.login import login_check +from python27HomeWork.unitTest.homeWork03072020.demo2.readExcel2 import login_data from python27HomeWork.unitTest.homeWork03072020.demo2.ddtNew import ddt, data diff --git a/python27HomeWork/unitTest/homeWork03102020/testLogin.py b/python27HomeWork/unitTest/homeWork03102020/testLogin.py index f2ab6ca..ed3d71c 100644 --- a/python27HomeWork/unitTest/homeWork03102020/testLogin.py +++ b/python27HomeWork/unitTest/homeWork03102020/testLogin.py @@ -9,8 +9,8 @@ Time: 2020/3/11 8:57 import os import unittest -from python27Class.homeWork.unitTest.homeWork03102020.ddtNew import ddt, data -from python27Class.homeWork.unitTest.homeWork03102020.readExcel import HandleExcel +from python27HomeWork.unitTest.homeWork03102020.ddtNew import ddt, data +from python27HomeWork.unitTest.homeWork03102020.readExcel import HandleExcel from python27HomeWork.unitTest.homeWork03102020.login import login_check diff --git a/venu/Scripts/Activate.ps1 b/venu/Scripts/Activate.ps1 new file mode 100644 index 0000000..3e91fac --- /dev/null +++ b/venu/Scripts/Activate.ps1 @@ -0,0 +1,375 @@ +<# +.Synopsis +Activate a Python virtual environment for the current Powershell session. + +.Description +Pushes the python executable for a virtual environment to the front of the +$Env:PATH environment variable and sets the prompt to signify that you are +in a Python virtual environment. Makes use of the command line switches as +well as the `pyvenv.cfg` file values present in the virtual environment. + +.Parameter VenvDir +Path to the directory that contains the virtual environment to activate. The +default value for this is the parent of the directory that the Activate.ps1 +script is located within. + +.Parameter Prompt +The prompt prefix to display when this virtual environment is activated. By +default, this prompt is the name of the virtual environment folder (VenvDir) +surrounded by parentheses and followed by a single space (ie. '(.venv) '). + +.Example +Activate.ps1 +Activates the Python virtual environment that contains the Activate.ps1 script. + +.Example +Activate.ps1 -Verbose +Activates the Python virtual environment that contains the Activate.ps1 script, +and shows extra information about the activation as it executes. + +.Example +Activate.ps1 -VenvDir C:\Users\MyUser\Common\.venv +Activates the Python virtual environment located in the specified location. + +.Example +Activate.ps1 -Prompt "MyPython" +Activates the Python virtual environment that contains the Activate.ps1 script, +and prefixes the current prompt with the specified string (surrounded in +parentheses) while the virtual environment is active. + + +#> +Param( + [Parameter(Mandatory = $false)] + [String] + $VenvDir, + [Parameter(Mandatory = $false)] + [String] + $Prompt +) + +<# Function declarations --------------------------------------------------- #> + +<# +.Synopsis +Remove all shell session elements added by the Activate script, including the +addition of the virtual environment's Python executable from the beginning of +the PATH variable. + +.Parameter NonDestructive +If present, do not remove this function from the global namespace for the +session. + +#> +function global:deactivate ([switch]$NonDestructive) { + # Revert to original values + + # The prior prompt: + if (Test-Path -Path Function:_OLD_VIRTUAL_PROMPT) { + Copy-Item -Path Function:_OLD_VIRTUAL_PROMPT -Destination Function:prompt + Remove-Item -Path Function:_OLD_VIRTUAL_PROMPT + } + + # The prior PYTHONHOME: + if (Test-Path -Path Env:_OLD_VIRTUAL_PYTHONHOME) { + Copy-Item -Path Env:_OLD_VIRTUAL_PYTHONHOME -Destination Env:PYTHONHOME + Remove-Item -Path Env:_OLD_VIRTUAL_PYTHONHOME + } + + # The prior PATH: + if (Test-Path -Path Env:_OLD_VIRTUAL_PATH) { + Copy-Item -Path Env:_OLD_VIRTUAL_PATH -Destination Env:PATH + Remove-Item -Path Env:_OLD_VIRTUAL_PATH + } + + # Just remove the VIRTUAL_ENV altogether: + if (Test-Path -Path Env:VIRTUAL_ENV) { + Remove-Item -Path env:VIRTUAL_ENV + } + + # Just remove the _PYTHON_VENV_PROMPT_PREFIX altogether: + if (Get-Variable -Name "_PYTHON_VENV_PROMPT_PREFIX" -ErrorAction SilentlyContinue) { + Remove-Variable -Name _PYTHON_VENV_PROMPT_PREFIX -Scope Global -Force + } + + # Leave deactivate function in the global namespace if requested: + if (-not $NonDestructive) { + Remove-Item -Path function:deactivate + } +} + +<# +.Description +Get-PyVenvConfig parses the values from the pyvenv.cfg file located in the +given folder, and returns them in a map. + +For each line in the pyvenv.cfg file, if that line can be parsed into exactly +two strings separated by `=` (with any amount of whitespace surrounding the =) +then it is considered a `key = value` line. The left hand string is the key, +the right hand is the value. + +If the value starts with a `'` or a `"` then the first and last character is +stripped from the value before being captured. + +.Parameter ConfigDir +Path to the directory that contains the `pyvenv.cfg` file. +#> +function Get-PyVenvConfig( + [String] + $ConfigDir +) { + Write-Verbose "Given ConfigDir=$ConfigDir, obtain values in pyvenv.cfg" + + # Ensure the file exists, and issue a warning if it doesn't (but still allow the function to continue). + $pyvenvConfigPath = Join-Path -Resolve -Path $ConfigDir -ChildPath 'pyvenv.cfg' -ErrorAction Continue + + # An empty map will be returned if no config file is found. + $pyvenvConfig = @{ } + + if ($pyvenvConfigPath) { + + Write-Verbose "File exists, parse `key = value` lines" + $pyvenvConfigContent = Get-Content -Path $pyvenvConfigPath + + $pyvenvConfigContent | ForEach-Object { + $keyval = $PSItem -split "\s*=\s*", 2 + if ($keyval[0] -and $keyval[1]) { + $val = $keyval[1] + + # Remove extraneous quotations around a string value. + if ("'""".Contains($val.Substring(0,1))) { + $val = $val.Substring(1, $val.Length - 2) + } + + $pyvenvConfig[$keyval[0]] = $val + Write-Verbose "Adding Key: '$($keyval[0])'='$val'" + } + } + } + return $pyvenvConfig +} + + +<# Begin Activate script --------------------------------------------------- #> + +# Determine the containing directory of this script +$VenvExecPath = Split-Path -Parent $MyInvocation.MyCommand.Definition +$VenvExecDir = Get-Item -Path $VenvExecPath + +Write-Verbose "Activation script is located in path: '$VenvExecPath'" +Write-Verbose "VenvExecDir Fullname: '$($VenvExecDir.FullName)" +Write-Verbose "VenvExecDir Name: '$($VenvExecDir.Name)" + +# Set values required in priority: CmdLine, ConfigFile, Default +# First, get the location of the virtual environment, it might not be +# VenvExecDir if specified on the command line. +if ($VenvDir) { + Write-Verbose "VenvDir given as parameter, using '$VenvDir' to determine values" +} else { + Write-Verbose "VenvDir not given as a parameter, using parent directory name as VenvDir." + $VenvDir = $VenvExecDir.Parent.FullName.TrimEnd("\\/") + $VenvDir = $VenvDir.Insert($VenvDir.Length, "/") + Write-Verbose "VenvDir=$VenvDir" +} + +# Next, read the `pyvenv.cfg` file to determine any required value such +# as `prompt`. +$pyvenvCfg = Get-PyVenvConfig -ConfigDir $VenvDir + +# Next, set the prompt from the command line, or the config file, or +# just use the name of the virtual environment folder. +if ($Prompt) { + Write-Verbose "Prompt specified as argument, using '$Prompt'" +} else { + Write-Verbose "Prompt not specified as argument to script, checking pyvenv.cfg value" + if ($pyvenvCfg -and $pyvenvCfg['prompt']) { + Write-Verbose " Setting based on value in pyvenv.cfg='$($pyvenvCfg['prompt'])'" + $Prompt = $pyvenvCfg['prompt']; + } + else { + Write-Verbose " Setting prompt based on parent's directory's name. (Is the directory name passed to venv module when creating the virutal environment)" + Write-Verbose " Got leaf-name of $VenvDir='$(Split-Path -Path $venvDir -Leaf)'" + $Prompt = Split-Path -Path $venvDir -Leaf + } +} + +Write-Verbose "Prompt = '$Prompt'" +Write-Verbose "VenvDir='$VenvDir'" + +# Deactivate any currently active virtual environment, but leave the +# deactivate function in place. +deactivate -nondestructive + +# Now set the environment variable VIRTUAL_ENV, used by many tools to determine +# that there is an activated venv. +$env:VIRTUAL_ENV = $VenvDir + +if (-not $Env:VIRTUAL_ENV_DISABLE_PROMPT) { + + Write-Verbose "Setting prompt to '$Prompt'" + + # Set the prompt to include the env name + # Make sure _OLD_VIRTUAL_PROMPT is global + function global:_OLD_VIRTUAL_PROMPT { "" } + Copy-Item -Path function:prompt -Destination function:_OLD_VIRTUAL_PROMPT + New-Variable -Name _PYTHON_VENV_PROMPT_PREFIX -Description "Python virtual environment prompt prefix" -Scope Global -Option ReadOnly -Visibility Public -Value $Prompt + + function global:prompt { + Write-Host -NoNewline -ForegroundColor Green "($_PYTHON_VENV_PROMPT_PREFIX) " + _OLD_VIRTUAL_PROMPT + } +} + +# Clear PYTHONHOME +if (Test-Path -Path Env:PYTHONHOME) { + Copy-Item -Path Env:PYTHONHOME -Destination Env:_OLD_VIRTUAL_PYTHONHOME + Remove-Item -Path Env:PYTHONHOME +} + +# Add the venv to the PATH +Copy-Item -Path Env:PATH -Destination Env:_OLD_VIRTUAL_PATH +$Env:PATH = "$VenvExecDir$([System.IO.Path]::PathSeparator)$Env:PATH" + +# SIG # Begin signature block +# MIIaVgYJKoZIhvcNAQcCoIIaRzCCGkMCAQExDzANBglghkgBZQMEAgEFADB5Bgor +# BgEEAYI3AgEEoGswaTA0BgorBgEEAYI3AgEeMCYCAwEAAAQQH8w7YFlLCE63JNLG +# KX7zUQIBAAIBAAIBAAIBAAIBADAxMA0GCWCGSAFlAwQCAQUABCDq2sTPEIJ8JE5n +# msRhacE7nmlm6ccumO/BwpdDqNYl5KCCFBgwggPuMIIDV6ADAgECAhB+k+v7fMZO +# WepLmnfUBvw7MA0GCSqGSIb3DQEBBQUAMIGLMQswCQYDVQQGEwJaQTEVMBMGA1UE +# CBMMV2VzdGVybiBDYXBlMRQwEgYDVQQHEwtEdXJiYW52aWxsZTEPMA0GA1UEChMG +# VGhhd3RlMR0wGwYDVQQLExRUaGF3dGUgQ2VydGlmaWNhdGlvbjEfMB0GA1UEAxMW +# VGhhd3RlIFRpbWVzdGFtcGluZyBDQTAeFw0xMjEyMjEwMDAwMDBaFw0yMDEyMzAy +# MzU5NTlaMF4xCzAJBgNVBAYTAlVTMR0wGwYDVQQKExRTeW1hbnRlYyBDb3Jwb3Jh +# dGlvbjEwMC4GA1UEAxMnU3ltYW50ZWMgVGltZSBTdGFtcGluZyBTZXJ2aWNlcyBD +# QSAtIEcyMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsayzSVRLlxwS +# CtgleZEiVypv3LgmxENza8K/LlBa+xTCdo5DASVDtKHiRfTot3vDdMwi17SUAAL3 +# Te2/tLdEJGvNX0U70UTOQxJzF4KLabQry5kerHIbJk1xH7Ex3ftRYQJTpqr1SSwF +# eEWlL4nO55nn/oziVz89xpLcSvh7M+R5CvvwdYhBnP/FA1GZqtdsn5Nph2Upg4XC +# YBTEyMk7FNrAgfAfDXTekiKryvf7dHwn5vdKG3+nw54trorqpuaqJxZ9YfeYcRG8 +# 4lChS+Vd+uUOpyyfqmUg09iW6Mh8pU5IRP8Z4kQHkgvXaISAXWp4ZEXNYEZ+VMET +# fMV58cnBcQIDAQABo4H6MIH3MB0GA1UdDgQWBBRfmvVuXMzMdJrU3X3vP9vsTIAu +# 3TAyBggrBgEFBQcBAQQmMCQwIgYIKwYBBQUHMAGGFmh0dHA6Ly9vY3NwLnRoYXd0 +# ZS5jb20wEgYDVR0TAQH/BAgwBgEB/wIBADA/BgNVHR8EODA2MDSgMqAwhi5odHRw +# Oi8vY3JsLnRoYXd0ZS5jb20vVGhhd3RlVGltZXN0YW1waW5nQ0EuY3JsMBMGA1Ud +# JQQMMAoGCCsGAQUFBwMIMA4GA1UdDwEB/wQEAwIBBjAoBgNVHREEITAfpB0wGzEZ +# MBcGA1UEAxMQVGltZVN0YW1wLTIwNDgtMTANBgkqhkiG9w0BAQUFAAOBgQADCZuP +# ee9/WTCq72i1+uMJHbtPggZdN1+mUp8WjeockglEbvVt61h8MOj5aY0jcwsSb0ep +# rjkR+Cqxm7Aaw47rWZYArc4MTbLQMaYIXCp6/OJ6HVdMqGUY6XlAYiWWbsfHN2qD +# IQiOQerd2Vc/HXdJhyoWBl6mOGoiEqNRGYN+tjCCBKMwggOLoAMCAQICEA7P9DjI +# /r81bgTYapgbGlAwDQYJKoZIhvcNAQEFBQAwXjELMAkGA1UEBhMCVVMxHTAbBgNV +# BAoTFFN5bWFudGVjIENvcnBvcmF0aW9uMTAwLgYDVQQDEydTeW1hbnRlYyBUaW1l +# IFN0YW1waW5nIFNlcnZpY2VzIENBIC0gRzIwHhcNMTIxMDE4MDAwMDAwWhcNMjAx +# MjI5MjM1OTU5WjBiMQswCQYDVQQGEwJVUzEdMBsGA1UEChMUU3ltYW50ZWMgQ29y +# cG9yYXRpb24xNDAyBgNVBAMTK1N5bWFudGVjIFRpbWUgU3RhbXBpbmcgU2Vydmlj +# ZXMgU2lnbmVyIC0gRzQwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCi +# Yws5RLi7I6dESbsO/6HwYQpTk7CY260sD0rFbv+GPFNVDxXOBD8r/amWltm+YXkL +# W8lMhnbl4ENLIpXuwitDwZ/YaLSOQE/uhTi5EcUj8mRY8BUyb05Xoa6IpALXKh7N +# S+HdY9UXiTJbsF6ZWqidKFAOF+6W22E7RVEdzxJWC5JH/Kuu9mY9R6xwcueS51/N +# ELnEg2SUGb0lgOHo0iKl0LoCeqF3k1tlw+4XdLxBhircCEyMkoyRLZ53RB9o1qh0 +# d9sOWzKLVoszvdljyEmdOsXF6jML0vGjG/SLvtmzV4s73gSneiKyJK4ux3DFvk6D +# Jgj7C72pT5kI4RAocqrNAgMBAAGjggFXMIIBUzAMBgNVHRMBAf8EAjAAMBYGA1Ud +# JQEB/wQMMAoGCCsGAQUFBwMIMA4GA1UdDwEB/wQEAwIHgDBzBggrBgEFBQcBAQRn +# MGUwKgYIKwYBBQUHMAGGHmh0dHA6Ly90cy1vY3NwLndzLnN5bWFudGVjLmNvbTA3 +# BggrBgEFBQcwAoYraHR0cDovL3RzLWFpYS53cy5zeW1hbnRlYy5jb20vdHNzLWNh +# LWcyLmNlcjA8BgNVHR8ENTAzMDGgL6AthitodHRwOi8vdHMtY3JsLndzLnN5bWFu +# dGVjLmNvbS90c3MtY2EtZzIuY3JsMCgGA1UdEQQhMB+kHTAbMRkwFwYDVQQDExBU +# aW1lU3RhbXAtMjA0OC0yMB0GA1UdDgQWBBRGxmmjDkoUHtVM2lJjFz9eNrwN5jAf +# BgNVHSMEGDAWgBRfmvVuXMzMdJrU3X3vP9vsTIAu3TANBgkqhkiG9w0BAQUFAAOC +# AQEAeDu0kSoATPCPYjA3eKOEJwdvGLLeJdyg1JQDqoZOJZ+aQAMc3c7jecshaAba +# tjK0bb/0LCZjM+RJZG0N5sNnDvcFpDVsfIkWxumy37Lp3SDGcQ/NlXTctlzevTcf +# Q3jmeLXNKAQgo6rxS8SIKZEOgNER/N1cdm5PXg5FRkFuDbDqOJqxOtoJcRD8HHm0 +# gHusafT9nLYMFivxf1sJPZtb4hbKE4FtAC44DagpjyzhsvRaqQGvFZwsL0kb2yK7 +# w/54lFHDhrGCiF3wPbRRoXkzKy57udwgCRNx62oZW8/opTBXLIlJP7nPf8m/PiJo +# Y1OavWl0rMUdPH+S4MO8HNgEdTCCBTAwggQYoAMCAQICEAQJGBtf1btmdVNDtW+V +# UAgwDQYJKoZIhvcNAQELBQAwZTELMAkGA1UEBhMCVVMxFTATBgNVBAoTDERpZ2lD +# ZXJ0IEluYzEZMBcGA1UECxMQd3d3LmRpZ2ljZXJ0LmNvbTEkMCIGA1UEAxMbRGln +# aUNlcnQgQXNzdXJlZCBJRCBSb290IENBMB4XDTEzMTAyMjEyMDAwMFoXDTI4MTAy +# MjEyMDAwMFowcjELMAkGA1UEBhMCVVMxFTATBgNVBAoTDERpZ2lDZXJ0IEluYzEZ +# MBcGA1UECxMQd3d3LmRpZ2ljZXJ0LmNvbTExMC8GA1UEAxMoRGlnaUNlcnQgU0hB +# MiBBc3N1cmVkIElEIENvZGUgU2lnbmluZyBDQTCCASIwDQYJKoZIhvcNAQEBBQAD +# ggEPADCCAQoCggEBAPjTsxx/DhGvZ3cH0wsxSRnP0PtFmbE620T1f+Wondsy13Hq +# dp0FLreP+pJDwKX5idQ3Gde2qvCchqXYJawOeSg6funRZ9PG+yknx9N7I5TkkSOW +# kHeC+aGEI2YSVDNQdLEoJrskacLCUvIUZ4qJRdQtoaPpiCwgla4cSocI3wz14k1g +# GL6qxLKucDFmM3E+rHCiq85/6XzLkqHlOzEcz+ryCuRXu0q16XTmK/5sy350OTYN +# kO/ktU6kqepqCquE86xnTrXE94zRICUj6whkPlKWwfIPEvTFjg/BougsUfdzvL2F +# sWKDc0GCB+Q4i2pzINAPZHM8np+mM6n9Gd8lk9ECAwEAAaOCAc0wggHJMBIGA1Ud +# EwEB/wQIMAYBAf8CAQAwDgYDVR0PAQH/BAQDAgGGMBMGA1UdJQQMMAoGCCsGAQUF +# BwMDMHkGCCsGAQUFBwEBBG0wazAkBggrBgEFBQcwAYYYaHR0cDovL29jc3AuZGln +# aWNlcnQuY29tMEMGCCsGAQUFBzAChjdodHRwOi8vY2FjZXJ0cy5kaWdpY2VydC5j +# b20vRGlnaUNlcnRBc3N1cmVkSURSb290Q0EuY3J0MIGBBgNVHR8EejB4MDqgOKA2 +# hjRodHRwOi8vY3JsNC5kaWdpY2VydC5jb20vRGlnaUNlcnRBc3N1cmVkSURSb290 +# Q0EuY3JsMDqgOKA2hjRodHRwOi8vY3JsMy5kaWdpY2VydC5jb20vRGlnaUNlcnRB +# c3N1cmVkSURSb290Q0EuY3JsME8GA1UdIARIMEYwOAYKYIZIAYb9bAACBDAqMCgG +# CCsGAQUFBwIBFhxodHRwczovL3d3dy5kaWdpY2VydC5jb20vQ1BTMAoGCGCGSAGG +# /WwDMB0GA1UdDgQWBBRaxLl7KgqjpepxA8Bg+S32ZXUOWDAfBgNVHSMEGDAWgBRF +# 66Kv9JLLgjEtUYunpyGd823IDzANBgkqhkiG9w0BAQsFAAOCAQEAPuwNWiSz8yLR +# FcgsfCUpdqgdXRwtOhrE7zBh134LYP3DPQ/Er4v97yrfIFU3sOH20ZJ1D1G0bqWO +# WuJeJIFOEKTuP3GOYw4TS63XX0R58zYUBor3nEZOXP+QsRsHDpEV+7qvtVHCjSSu +# JMbHJyqhKSgaOnEoAjwukaPAJRHinBRHoXpoaK+bp1wgXNlxsQyPu6j4xRJon89A +# y0BEpRPw5mQMJQhCMrI2iiQC/i9yfhzXSUWW6Fkd6fp0ZGuy62ZD2rOwjNXpDd32 +# ASDOmTFjPQgaGLOBm0/GkxAG/AeB+ova+YJJ92JuoVP6EpQYhS6SkepobEQysmah +# 5xikmmRR7zCCBkcwggUvoAMCAQICEAM+1e2gZdG4yR38+Spsm9gwDQYJKoZIhvcN +# AQELBQAwcjELMAkGA1UEBhMCVVMxFTATBgNVBAoTDERpZ2lDZXJ0IEluYzEZMBcG +# A1UECxMQd3d3LmRpZ2ljZXJ0LmNvbTExMC8GA1UEAxMoRGlnaUNlcnQgU0hBMiBB +# c3N1cmVkIElEIENvZGUgU2lnbmluZyBDQTAeFw0xODEyMTgwMDAwMDBaFw0yMTEy +# MjIxMjAwMDBaMIGDMQswCQYDVQQGEwJVUzEWMBQGA1UECBMNTmV3IEhhbXBzaGly +# ZTESMBAGA1UEBxMJV29sZmVib3JvMSMwIQYDVQQKExpQeXRob24gU29mdHdhcmUg +# Rm91bmRhdGlvbjEjMCEGA1UEAxMaUHl0aG9uIFNvZnR3YXJlIEZvdW5kYXRpb24w +# ggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCqvaRLsnW5buglHGWx2sRM +# CMpqt+gflMjw9ZJPphvbE+ig/u8dPiJpVfIvkvN7V/ncnDrtKn67nbh8ld/fSodW +# IRbG6bLZFYbSdyJTZ36YyrOOVoBZJk0XS7hFy/IMmiQRXRFQ6ojkIbnM8jdb25Do +# uJSTccJhbqSkfXvsDlPenD8+jw7woSskafVqdqq0ggKr33JLGsxp3/aE8wFF/o11 +# qHt/sc+fWCRJJMCh6PK6oXmH4HSojj4krn5Uu/Prn1VNsBYmxhqSTFnFVZikW/gp +# 5BJLCijQPMy+YRGxPM29UExaG706uIk2D5B8WZ/3rNVO73dxn6vvEyltfJ8g4YqE +# cxpG5nyKG5YjHeAj1YcMVfp8EpHz4eWF2RqIERYixdGjL4RBTIrvNSz4Wo6jaxFi +# 21uzwxMX1gMoVnDI+Of1af6AsZ3k1QRXI28P1BUYES03u/Hztt24lQHwXgPKUSwy +# 1lN+PD9q7oCY6ead4rlRypIm7BHJloY2TvLeqPTq63H4dNOoeCL3vlSnF/KvACqS +# i+hkRYFVKm+S7w9WGQFdwuY17owQeUWJoyiIAMB4qZflEVGQ35WuZgZODjNqPF90 +# d4hjxO8t/jy1N+adAl33yB4lC//TU1TL8XG7CoC5ORp7Pk2XUvE/QKlMeGCHM7gV +# EPiK1PbCpOHiOmiPD1BmewIDAQABo4IBxTCCAcEwHwYDVR0jBBgwFoAUWsS5eyoK +# o6XqcQPAYPkt9mV1DlgwHQYDVR0OBBYEFPwqv37Uvqzzgpykz3siATu4jwfyMA4G +# A1UdDwEB/wQEAwIHgDATBgNVHSUEDDAKBggrBgEFBQcDAzB3BgNVHR8EcDBuMDWg +# M6Axhi9odHRwOi8vY3JsMy5kaWdpY2VydC5jb20vc2hhMi1hc3N1cmVkLWNzLWcx +# LmNybDA1oDOgMYYvaHR0cDovL2NybDQuZGlnaWNlcnQuY29tL3NoYTItYXNzdXJl +# ZC1jcy1nMS5jcmwwTAYDVR0gBEUwQzA3BglghkgBhv1sAwEwKjAoBggrBgEFBQcC +# ARYcaHR0cHM6Ly93d3cuZGlnaWNlcnQuY29tL0NQUzAIBgZngQwBBAEwgYQGCCsG +# AQUFBwEBBHgwdjAkBggrBgEFBQcwAYYYaHR0cDovL29jc3AuZGlnaWNlcnQuY29t +# ME4GCCsGAQUFBzAChkJodHRwOi8vY2FjZXJ0cy5kaWdpY2VydC5jb20vRGlnaUNl +# cnRTSEEyQXNzdXJlZElEQ29kZVNpZ25pbmdDQS5jcnQwDAYDVR0TAQH/BAIwADAN +# BgkqhkiG9w0BAQsFAAOCAQEAS3WhLbVfRrGJp8+PJj6+ViqNYq5S79gW5hYgSrqJ +# FFoVps0OGP1EEVAX9omITmaytAQ58APr/qBVIf3WVlYGqDo0R4b1P1JduIA+8n0I +# RYWx2RdSuNtaG8Ke5nuSpS5TkEC6YjVBFuliBkvdQD6JleSaNsaHWWfytSFYjFsF +# gvhKDaeqkHjinsJQViQ+P8xvBTaC8FXaleOPlZqyShm2wAIy/mDjYE2hUuhECL56 +# /qzTs8634m0dEibzuVPK5zzCHSzBM9TCSwpstTVl2P0Kmq3Nee5UTTDnR7Em9FIr +# dW3iD7S+KCkjeo+YN2mR/37gy/LRcw1yqu2HDbRH4+QiUzGCBZQwggWQAgEBMIGG +# MHIxCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsT +# EHd3dy5kaWdpY2VydC5jb20xMTAvBgNVBAMTKERpZ2lDZXJ0IFNIQTIgQXNzdXJl +# ZCBJRCBDb2RlIFNpZ25pbmcgQ0ECEAM+1e2gZdG4yR38+Spsm9gwDQYJYIZIAWUD +# BAIBBQCggdAwGQYJKoZIhvcNAQkDMQwGCisGAQQBgjcCAQQwHAYKKwYBBAGCNwIB +# CzEOMAwGCisGAQQBgjcCARUwLwYJKoZIhvcNAQkEMSIEIDwkNFE0J7lFqDFWlO8g +# a0Vg8TqicqZe2fbuhTmOCdCDMGQGCisGAQQBgjcCAQwxVjBUoFKAUABCAHUAaQBs +# AHQAOgAgAFIAZQBsAGUAYQBzAGUAXwBtAGEAcwB0AGUAcgBfAHYAMwAuADgALgAx +# AF8AMgAwADEAOQAxADIAMQA4AC4AMAAxMA0GCSqGSIb3DQEBAQUABIICACbwmgd+ +# doVwLf3DbJEz47aQT3LANL6bGZ3AfE192LY2+l3aO125tMGK0NdnrU3F7oTRTIrF +# sdOm2+OstYBdLbB48RGYslZmPbxQu7u4QBBBi/YhggMLlokM9JL+8HM8SqLRiG76 +# 0B/ilq9T1MteBnft14afBSleIpgB+ce0VKNL8gPGORWvnd6A/smkkquhPlmBDUvG +# wX8qZFHS6qywahdOwANMviQpswQ3YUG5jWXi8AX6GNeWnxXx6Asx5f//74Gqo6a7 +# OFA/VmmsVaEuTyDF7ll+GlrGn77T9bcgk5KaaVv6dxrbgaik49I7Qa1nGSvVHwjX +# XB652tpfHxXnajO7Qz3w3iOOddAanVTIEcQDbCejtSiqgcKPE1R2+c+wJ1HRaKZ7 +# yM77l1s8gK8zKi9xUdvASWiFiJ2An5FcenkjTg3adAmhmIPkNwVvSZmUdRLPXAxf +# Y/H0y+8IEblQ4MfbV4tuc//gI/hrgfTlfq2/45KG0TQ7/iPwSmEcBQFKBixF5bxS +# 6u9kpB7pj2N9A8J2ttWnC5qVxTd7PH+pTy0vSEpXlRQCb7++jjJfroPWbJM+/X1g +# 5PRl5f0Ya1hpYxy56yBz2bBANoVuaFfDWDPmcBKva7Hqgw/OI3vZu3RqCs7HXdGw +# tf7bFzEMYKzgmDnb90ouWZAR9q5PzB5VGtA7oYICCzCCAgcGCSqGSIb3DQEJBjGC +# AfgwggH0AgEBMHIwXjELMAkGA1UEBhMCVVMxHTAbBgNVBAoTFFN5bWFudGVjIENv +# cnBvcmF0aW9uMTAwLgYDVQQDEydTeW1hbnRlYyBUaW1lIFN0YW1waW5nIFNlcnZp +# Y2VzIENBIC0gRzICEA7P9DjI/r81bgTYapgbGlAwCQYFKw4DAhoFAKBdMBgGCSqG +# SIb3DQEJAzELBgkqhkiG9w0BBwEwHAYJKoZIhvcNAQkFMQ8XDTE5MTIxODIzMTcx +# MlowIwYJKoZIhvcNAQkEMRYEFH0jwh7PemYBuyfNXIYTFCAb+YspMA0GCSqGSIb3 +# DQEBAQUABIIBAElndo5LcPp3QeHraYmNpNphu0C2yEvJkknWL7BrO0bC2q2q+C/e +# HtRIX8F8nh/2q4MBUzH1pKY+KUdJlP47R6vgOfGtOPcAwFWuevZYDZe6YDATLXvK +# Qdysm/Fm9DSM3HesLRkEthtzNVQxMjO+/1AQb6I4/dvJrmUyVE67m1L5S7B8Ezot +# Y0MQdjZDUMV2tSwLoUnddBkQG3PxPkJoZlpC54rzVKOuoXUUOpvjLau9EAsIUH2K +# S7IwltXcdLL/GY2g3Sto8Jqyjl1Qcky4FqBGH3tyaNOtLl31uDZlDpbttLnZQKWf +# CIKBmWknNrTzvZuH8fZcLiNY7dobJicoWEY= +# SIG # End signature block diff --git a/venu/Scripts/activate b/venu/Scripts/activate new file mode 100644 index 0000000..f573b1a --- /dev/null +++ b/venu/Scripts/activate @@ -0,0 +1,76 @@ +# This file must be used with "source bin/activate" *from bash* +# you cannot run it directly + +deactivate () { + # reset old environment variables + if [ -n "${_OLD_VIRTUAL_PATH:-}" ] ; then + PATH="${_OLD_VIRTUAL_PATH:-}" + export PATH + unset _OLD_VIRTUAL_PATH + fi + if [ -n "${_OLD_VIRTUAL_PYTHONHOME:-}" ] ; then + PYTHONHOME="${_OLD_VIRTUAL_PYTHONHOME:-}" + export PYTHONHOME + unset _OLD_VIRTUAL_PYTHONHOME + fi + + # This should detect bash and zsh, which have a hash command that must + # be called to get it to forget past commands. Without forgetting + # past commands the $PATH changes we made may not be respected + if [ -n "${BASH:-}" -o -n "${ZSH_VERSION:-}" ] ; then + hash -r + fi + + if [ -n "${_OLD_VIRTUAL_PS1:-}" ] ; then + PS1="${_OLD_VIRTUAL_PS1:-}" + export PS1 + unset _OLD_VIRTUAL_PS1 + fi + + unset VIRTUAL_ENV + if [ ! "${1:-}" = "nondestructive" ] ; then + # Self destruct! + unset -f deactivate + fi +} + +# unset irrelevant variables +deactivate nondestructive + +VIRTUAL_ENV="E:\PycharmProject\PythonClassChy\venu" +export VIRTUAL_ENV + +_OLD_VIRTUAL_PATH="$PATH" +PATH="$VIRTUAL_ENV/Scripts:$PATH" +export PATH + +# unset PYTHONHOME if set +# this will fail if PYTHONHOME is set to the empty string (which is bad anyway) +# could use `if (set -u; : $PYTHONHOME) ;` in bash +if [ -n "${PYTHONHOME:-}" ] ; then + _OLD_VIRTUAL_PYTHONHOME="${PYTHONHOME:-}" + unset PYTHONHOME +fi + +if [ -z "${VIRTUAL_ENV_DISABLE_PROMPT:-}" ] ; then + _OLD_VIRTUAL_PS1="${PS1:-}" + if [ "x(venu) " != x ] ; then + PS1="(venu) ${PS1:-}" + else + if [ "`basename \"$VIRTUAL_ENV\"`" = "__" ] ; then + # special case for Aspen magic directories + # see http://www.zetadev.com/software/aspen/ + PS1="[`basename \`dirname \"$VIRTUAL_ENV\"\``] $PS1" + else + PS1="(`basename \"$VIRTUAL_ENV\"`)$PS1" + fi + fi + export PS1 +fi + +# This should detect bash and zsh, which have a hash command that must +# be called to get it to forget past commands. Without forgetting +# past commands the $PATH changes we made may not be respected +if [ -n "${BASH:-}" -o -n "${ZSH_VERSION:-}" ] ; then + hash -r +fi diff --git a/venu/Scripts/activate.bat b/venu/Scripts/activate.bat new file mode 100644 index 0000000..e4f7a2e --- /dev/null +++ b/venu/Scripts/activate.bat @@ -0,0 +1,33 @@ +@echo off + +rem This file is UTF-8 encoded, so we need to update the current code page while executing it +for /f "tokens=2 delims=:." %%a in ('"%SystemRoot%\System32\chcp.com"') do ( + set _OLD_CODEPAGE=%%a +) +if defined _OLD_CODEPAGE ( + "%SystemRoot%\System32\chcp.com" 65001 > nul +) + +set VIRTUAL_ENV=E:\PycharmProject\PythonClassChy\venu + +if not defined PROMPT set PROMPT=$P$G + +if defined _OLD_VIRTUAL_PROMPT set PROMPT=%_OLD_VIRTUAL_PROMPT% +if defined _OLD_VIRTUAL_PYTHONHOME set PYTHONHOME=%_OLD_VIRTUAL_PYTHONHOME% + +set _OLD_VIRTUAL_PROMPT=%PROMPT% +set PROMPT=(venu) %PROMPT% + +if defined PYTHONHOME set _OLD_VIRTUAL_PYTHONHOME=%PYTHONHOME% +set PYTHONHOME= + +if defined _OLD_VIRTUAL_PATH set PATH=%_OLD_VIRTUAL_PATH% +if not defined _OLD_VIRTUAL_PATH set _OLD_VIRTUAL_PATH=%PATH% + +set PATH=%VIRTUAL_ENV%\Scripts;%PATH% + +:END +if defined _OLD_CODEPAGE ( + "%SystemRoot%\System32\chcp.com" %_OLD_CODEPAGE% > nul + set _OLD_CODEPAGE= +) diff --git a/venu/Scripts/deactivate.bat b/venu/Scripts/deactivate.bat new file mode 100644 index 0000000..1205c61 --- /dev/null +++ b/venu/Scripts/deactivate.bat @@ -0,0 +1,21 @@ +@echo off + +if defined _OLD_VIRTUAL_PROMPT ( + set "PROMPT=%_OLD_VIRTUAL_PROMPT%" +) +set _OLD_VIRTUAL_PROMPT= + +if defined _OLD_VIRTUAL_PYTHONHOME ( + set "PYTHONHOME=%_OLD_VIRTUAL_PYTHONHOME%" + set _OLD_VIRTUAL_PYTHONHOME= +) + +if defined _OLD_VIRTUAL_PATH ( + set "PATH=%_OLD_VIRTUAL_PATH%" +) + +set _OLD_VIRTUAL_PATH= + +set VIRTUAL_ENV= + +:END diff --git a/venu/Scripts/python.exe b/venu/Scripts/python.exe new file mode 100644 index 0000000..f609b93 Binary files /dev/null and b/venu/Scripts/python.exe differ diff --git a/venu/Scripts/pythonw.exe b/venu/Scripts/pythonw.exe new file mode 100644 index 0000000..0a62940 Binary files /dev/null and b/venu/Scripts/pythonw.exe differ diff --git a/venu/pyvenv.cfg b/venu/pyvenv.cfg new file mode 100644 index 0000000..3b97ed9 --- /dev/null +++ b/venu/pyvenv.cfg @@ -0,0 +1,3 @@ +home = D:\Program Files\Python381 +include-system-site-packages = true +version = 3.8.1