Learning logging module
add learning notes about python, pytest and allure
This commit is contained in:
parent
08006af8f3
commit
1ec33adff6
Binary file not shown.
Binary file not shown.
|
@ -0,0 +1,2 @@
|
|||
这是在柠檬班学习python自动化测试的所有笔记以及练习代码。
|
||||
留待以后参考。
|
Binary file not shown.
Binary file not shown.
|
@ -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
|
||||
|
||||
|
|
@ -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:打印日志级别的数值
|
||||
|
||||
"""
|
|
@ -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------------
|
|
@ -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------------
|
|
@ -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级别的日志')
|
||||
|
|
@ -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级别的日志')
|
|
@ -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的等级是无法输出的。
|
|
@ -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级别的日志')
|
|
@ -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------------')
|
|
@ -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()
|
|
@ -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: ----
|
|
@ -0,0 +1,12 @@
|
|||
"""
|
||||
=================================
|
||||
Author: Flora Chen
|
||||
Time: 2020/3/12 21:54
|
||||
-_- -_- -_- -_- -_- -_- -_- -_-
|
||||
=================================
|
||||
"""
|
||||
from python27Class.unitTest.class03122020.demo2.handleLogging import log
|
||||
|
||||
|
||||
|
||||
log.error('----')
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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
|
|
@ -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
|
|
@ -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=
|
||||
)
|
|
@ -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
|
Binary file not shown.
Binary file not shown.
|
@ -0,0 +1,3 @@
|
|||
home = D:\Program Files\Python381
|
||||
include-system-site-packages = true
|
||||
version = 3.8.1
|
Loading…
Reference in New Issue