[Python] Python Virtual Environment Setting on Window

Python Virtual Environment Setting on Window
Windows 에서 파이썬 가상환경을 구성하는 방법

Windows 에서 파이썬 가상환경을 구성하는 방법에 대한 기록을 남깁니다.

Windows에서 Python 가상환경 구성하기

Python 개발을 하다 보면 프로젝트마다 다른 패키지 버전이 필요할 때가 있다. 이를 관리하기 위해 Python 가상환경을 사용하는 것이 좋습니다. 이번 포스트에서는 Windows에서 Python 가상환경을 구성하고 사용하는 방법을 단계별로 진행해 봅니다.

1. Python pip Upgrade

pip install --upgrade pip
pip install –upgrade pip
pip install --upgrade pip

upgrade 중 위와 같은 오류메세지가 나온다면 이미지 하단의 설명과 같이 다음 명령을 실행합니다.

python.exe -m pip install --upgrade pip
python.exe -m pip install –upgrade pip
python.exe -m pip install --upgrade pip

2. 가상환경 생성

Python 가상환경을 생성하기 위해 Powershell 을 엽니다.

설치된 Python 확인

현재 Windows 에 설치된 Python 의 version 들을 확인합니다.

설치된 Python 확인
설치된 Python 확인

PowerShell

PowerShell 에서는 다음 방법 중 두가지를 사용합니다.

py -0

Get-Command python* | Select-Object Name, Version, Source

where python

Powershell 에서는 where python 이 작동하지 않네요.

where python
where python

Command Prompt

where python

Command Prompt 에서는 작동되네요.

새로 구성할 Python version 설치

Python version 설치
Python version 설치

Windows 에서 virtualenv 를 사용한 가상환경 관리는 MAC OS 와는 다르게 command 명령으로는 설치하지 못하고 Python 공식 site 로 이동하여 설치할 Version 을 Download 하여 직접설치를 해야하는 불편이 있네요. 대신 Custom 설치를 사용해서 Python 들을 찾기 쉬운곳에 한군데에 모아 놓을 수 있는 장점?은 있네요(제가 본래 Windows 사용자라 MAC 에는 약간 어색함이 있어요. ^^;). 저는 3.8 버전을 Download 받았습니다.

작업 디렉터리 설정

가상환경을 생성할 디렉터리로 이동합니다. 예를 들어, `D:\Python_Envs\envs` 디렉터리를 만들고 이동.

mkdir
mkdir
mkdir D:\\Python_Envs\envs

가상환경 생성

`virtualenv` 모듈을 사용하여 가상환경을 만듭니다. `virtualenv` 뒤에 가상환경의 이름을 지정합니다. 예를 들어, `Py38`라는 이름으로 가상환경을.. Python 3.8 version 으로 만든다.

virtualenv Py38 --python=3.8
virtualenv Py38 –python=3.8
cd C:\\Python_Envs\envs 
virtualenv Py38 --python=3.8  

3. 가상환경 활성화

가상환경을 활성화하여 해당 가상환경에서만 Python과 패키지들이 작동하게 합니다.
다음 명령어를 입력하여 가상환경을 활성화합니다.

PowerShell

Py38\\Scripts\\activate.ps1  

Command Prompt

Py38\\Scripts\\activate  

활성화되면 명령 프롬프트에 `(Py38)`라는 표시가 붙습니다. 이는 가상환경이 활성화되었음을 의미합니다.

4. 패키지 설치

가상환경이 활성화된 상태에서 `pip` 명령어를 사용하여 필요한 패키지를 설치할 수 있습니다. 예를 들어, `requests` 패키지를 설치하려면 다음과 같이 입력합니다.

pip install requests  

5. 가상환경 비활성화

작업을 마친 후 가상환경을 비활성화하려면 다음 명령어를 입력합니다.

deactivate  

6. 가상환경 삭제

가상환경을 더 이상 사용하지 않으려면 가상환경 디렉터리를 삭제하면 됩니다. 예를 들어, `Py38` 디렉터리를 삭제합니다.

rmdir Py38
rmdir Py38

PowerShell

rmdir Py38  

Command Prompt

rmdir /s /q Py38  

이렇게 하면 가상환경이 삭제됩니다.

마무리

이 단계를 통해 Windows에서 Python 가상환경을 손쉽게 구성하고 사용할 수 있습니다. 가상환경을 사용하면 프로젝트 간의 패키지 충돌을 피하고, 각 프로젝트에 필요한 패키지 버전을 독립적으로 관리할 수 있습니다.
이제 가상환경을 만들어 더욱 깔끔하고 효율적인 Python 개발을 하게 되었습니다!

행복한 고수되십시오.

WooGong ))*
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

[VB.NET] Null Class as Utility

Null class as Utility

Null Class as Utility

Utility 로 쓰면 어떨까 해서 올립니다.

1. Utility 로 사용할 Null Class

첫 소스는 codeproject 에서 가져왔는데요
조금 조금씩 수정했습니다.
코드를 보시면 이걸 왜 이렇게 했을까… 라는 생각을 갖게 하는 부분들이 있습니다.  ^^

필요하신 부분 있으시면 수정해서 사용하시면 좋을 듯합니다.

이런 코드도 있더라 정도로 생각해 두시면… ^^

이런식으로 자신만의 함수들을 따로 만들어 놓으시면
자신만의 프래임웍 유틸리티를 만들수 있겠죠? ^^

2. Code

Code Snippet
  1. Imports System
  2. Imports System.Reflection
  3.  
  4. Public Class Null
  5.     ‘ define application encoded null values
  6.     Public Shared ReadOnly Property NullShort() As Short
  7.         Get
  8.             Return -1
  9.         End Get
  10.     End Property
  11.     Public Shared ReadOnly Property NullInteger() As Integer
  12.         Get
  13.             Return -1
  14.         End Get
  15.     End Property
  16.     Public Shared ReadOnly Property NullSingle() As Single
  17.         Get
  18.             Return Single.MinValue
  19.         End Get
  20.     End Property
  21.     Public Shared ReadOnly Property NullDouble() As Double
  22.         Get
  23.             Return Double.MinValue
  24.         End Get
  25.     End Property
  26.     Public Shared ReadOnly Property NullDecimal() As Decimal
  27.         Get
  28.             Return Decimal.MinValue
  29.         End Get
  30.     End Property
  31.     Public Shared ReadOnly Property NullDate() As Date
  32.         Get
  33.             Return Date.MinValue
  34.         End Get
  35.     End Property
  36.     Public Shared ReadOnly Property NullString() As String
  37.         Get
  38.             Return “”
  39.         End Get
  40.     End Property
  41.     Public Shared ReadOnly Property NullBoolean() As Boolean
  42.         Get
  43.             Return False
  44.         End Get
  45.     End Property
  46.     Public Shared ReadOnly Property NullGuid() As Guid
  47.         Get
  48.             Return Guid.Empty
  49.         End Get
  50.     End Property
  51.     ‘ sets a field to an application encoded null value ( used in BLL layer )
  52.     Public Shared Function SetNull(ByVal objValue As Object, ByVal objField As Object) As Object
  53.         If IsDBNull(objValue) Then
  54.             If TypeOf objField Is Short Then
  55.                 Return NullShort
  56.             ElseIf TypeOf objField Is Integer Then
  57.                 Return NullInteger
  58.             ElseIf TypeOf objField Is Single Then
  59.                 Return NullSingle
  60.             ElseIf TypeOf objField Is Double Then
  61.                 Return NullDouble
  62.             ElseIf TypeOf objField Is Decimal Then
  63.                 Return NullDecimal
  64.             ElseIf TypeOf objField Is Date Then
  65.                 Return NullDate
  66.             ElseIf TypeOf objField Is String Then
  67.                 Return NullString
  68.             ElseIf TypeOf objField Is Boolean Then
  69.                 Return NullBoolean
  70.             ElseIf TypeOf objField Is Guid Then
  71.                 Return NullGuid
  72.             Else ‘ complex object
  73.                 Return Nothing
  74.             End If
  75.         Else ‘ return value
  76.             Return objValue
  77.         End If
  78.     End Function
  79.     ‘ sets a field to an application encoded null value ( used in BLL layer )
  80.     Public Shared Function SetNull(ByVal objPropertyInfo As PropertyInfo) As Object
  81.         Select Case objPropertyInfo.PropertyType.ToString
  82.             Case “System.Int16”
  83.                 Return NullShort
  84.             Case “System.Int32”, “System.Int64”
  85.                 Return NullInteger
  86.             Case “System.Single”
  87.                 Return NullSingle
  88.             Case “System.Double”
  89.                 Return NullDouble
  90.             Case “System.Decimal”
  91.                 Return NullDecimal
  92.             Case “System.DateTime”
  93.                 Return NullDate
  94.             Case “System.String”, “System.Char”
  95.                 Return NullString
  96.             Case “System.Boolean”
  97.                 Return NullBoolean
  98.             Case “System.Guid”
  99.                 Return NullGuid
  100.             Case Else
  101.                 ‘ Enumerations default to the first entry
  102.                 Dim pType As Type = objPropertyInfo.PropertyType
  103.                 If pType.BaseType.Equals(GetType(System.Enum)) Then
  104.                     Dim objEnumValues As System.Array = System.Enum.GetValues(pType)
  105.                     Array.Sort(objEnumValues)
  106.                     Return System.Enum.ToObject(pType, objEnumValues.GetValue(0))
  107.                 Else ‘ complex object
  108.                     Return Nothing
  109.                 End If
  110.         End Select
  111.     End Function
  112.     ‘ convert an application encoded null value to a database null value ( used in DAL )
  113.     Public Shared Function GetNull(ByVal objField As Object, ByVal objDBNull As Object) As Object
  114.         GetNull = objField
  115.         If objField Is Nothing Then
  116.             Return objDBNull
  117.         ElseIf TypeOf objField Is Short Then
  118.             If Convert.ToInt16(objField) = NullShort Then
  119.                 Return objDBNull
  120.             End If
  121.         ElseIf TypeOf objField Is Integer Then
  122.             If Convert.ToInt32(objField) = NullInteger Then
  123.                 Return objDBNull
  124.             End If
  125.         ElseIf TypeOf objField Is Single Then
  126.             If Convert.ToSingle(objField) = NullSingle Then
  127.                 Return objDBNull
  128.             End If
  129.         ElseIf TypeOf objField Is Double Then
  130.             If Convert.ToDouble(objField) = NullDouble Then
  131.                 Return objDBNull
  132.             End If
  133.         ElseIf TypeOf objField Is Decimal Then
  134.             If Convert.ToDecimal(objField) = NullDecimal Then
  135.                 Return objDBNull
  136.             End If
  137.         ElseIf TypeOf objField Is Date Then
  138.             ‘ compare the Date part of the DateTime with the DatePart of the NullDate ( this avoids subtle time differences )
  139.             If Convert.ToDateTime(objField).Date = NullDate.Date Then
  140.                 Return objDBNull
  141.             End If
  142.         ElseIf TypeOf objField Is String Then
  143.             If objField Is Nothing Then
  144.                 Return objDBNull
  145.             Else
  146.                 If objField.ToString = NullString Then
  147.                     Return objDBNull
  148.                 End If
  149.             End If
  150.         ElseIf TypeOf objField Is Boolean Then
  151.             If Convert.ToBoolean(objField) = NullBoolean Then
  152.                 Return objDBNull
  153.             End If
  154.         ElseIf TypeOf objField Is Guid Then
  155.             If CType(objField, System.Guid).Equals(NullGuid) Then
  156.                 Return objDBNull
  157.             End If
  158.         End If
  159.     End Function
  160.     ‘ checks if a field contains an application encoded null value
  161.     Public Shared Function IsNull(ByVal objField As Object) As Boolean
  162.         If Not objField Is Nothing Then
  163.             If TypeOf objField Is Integer Then
  164.                 Return objField.Equals(NullInteger)
  165.             ElseIf TypeOf objField Is Single Then
  166.                 Return objField.Equals(NullSingle)
  167.             ElseIf TypeOf objField Is Double Then
  168.                 Return objField.Equals(NullDouble)
  169.             ElseIf TypeOf objField Is Decimal Then
  170.                 Return objField.Equals(NullDecimal)
  171.             ElseIf TypeOf objField Is Date Then
  172.                 Dim objDate As DateTime = CType(objField, DateTime)
  173.                 Return objDate.Date.Equals(NullDate.Date)
  174.             ElseIf TypeOf objField Is String Then
  175.                 Return objField.Equals(NullString)
  176.             ElseIf TypeOf objField Is Boolean Then
  177.                 Return objField.Equals(NullBoolean)
  178.             ElseIf TypeOf objField Is Guid Then
  179.                 Return objField.Equals(NullGuid)
  180.             Else ‘ complex object
  181.                 Return False
  182.             End If
  183.         Else
  184.             Return True
  185.         End If
  186.     End Function
  187. End Class

 

행복한 고수되십시오.

WooGong ))*
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

블로그를 옮겼습니다.

블로그를 tistory 에서 word press 로 옮겼습니다.

tistory 사용이 너무 불편해서 옮기려하는데… 잘 하는 짓?인지 모르겠네요. ^^;

조금씩 사용하면서 이전 글들을 하나씩 옮겨보며 테스트 해 보겠습니다.

한동안은 양쪽 다 글을 올리며 살펴보겠습니다.

 

행복한 고수되십시오.

WooGong ))*

\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\