Linux/Linux 실습

[Linux] Python3 가상환경 사용하기

GGkeeper 2021. 11. 30. 00:28

# yum -y install python3

실습> 파이썬 가상환경 사용하기

파이썬 가상환경 메뉴얼
https://docs.python.org/ko/3/library/venv.html#module-venv

1. 가상환경 생성
참고로 python은 보안상 root 보다는 일반유저로 실행하는게 좋다.
그러나 여기서는 테스트이므로 root로 사용한다.
형식 : python -m venv 프로젝트디렉터리
[root@python python]# python3 -m venv myenv
[root@python python]# ls -ld myenv
drwxr-xr-x. 5 root root 74 11월 26 15:46 myenv

2. 가상환경 실행
생성된 가상환경을 실행한다.
생성된 프로젝트 디렉터리에 이동해서 bin/activate 를 source 명령어를 이용해서 실행한다.
[root@python python]# cd myenv
[root@python myenv]# source bin/activate
(myenv) [root@python myenv]# 

(myenv) [root@python myenv]# python

Python 3.6.8 (default, Nov 16 2020, 16:55:22) 
[GCC 4.8.5 20150623 (Red Hat 4.8.5-44)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> quit()


3. pip 업그레이드
아래 2가지 중에서 하나를 사용하면 pip 가 업그레이드 된다.
(myenv) [root@python myenv]# pip install --upgrade pip
(myenv) [root@python myenv]# python -m pip install --upgrade pip

(myenv) [root@python myenv]# python -m pip list

Package    Version
---------- -------
pip        21.3.1
setuptools 39.2.0


4. 패키지 설치
pymysql 패키지 : MySQL, MariaDB 패키지
아래 2가지 중에서 하나를 사용하면 패키지를 설치할 수 있다.
(myenv) [root@python myenv]# pip install pymysql
(myenv) [root@python myenv]# python -m pip install pymysql

아래 2가지 중에서 하나를 사용한다.
(myenv) [root@python myenv]# pip list
(myenv) [root@python myenv]# python -m pip list

Package    Version
---------- -------
pip        21.3.1
PyMySQL    1.0.2
setuptools 39.2.0


5. 가상환경 해제하기
deactivate 명령어를 이용해서 가상환경을 해제한다.
deactivate 명령어는 함수로 정의되어 있고 set 으로 확인할 수 있다.
(myenv) [root@python myenv]# deactivate
[root@python myenv]#



실습> python 을 일반유저에서 사용하기

1. 사용자 생성
python 을 일반유저에서 사용할 수 있도록 설정한다.
[root@python python]# useradd pythonuser
[root@python python]# passwd pythonuser
# su - pythonuser
[pythonuser@python ~]$


2. 가상환경 생성
가상환경 project1을 생성한다.
[pythonuser@python ~]$ python3 -m venv project1

3. 가상환경 실행
[pythonuser@python ~]$ cd project1
[pythonuser@python project1]$ source bin/activate
(project1) [pythonuser@python project1]$ 

4. pip 업그레이드
pip를 업그레이드 한다.
(project1) [pythonuser@python project1]$ python -m pip install --upgrade pip
(project1) [pythonuser@python project1]$ python -m pip list

Package    Version
---------- -------
pip        21.3.1
setuptools 39.2.0


5. 패키지 설치
pymysql 패키지 : MySQL, MariaDB 패키지
pymysql 패키지를 설치한다.
(project1) [pythonuser@python project1]$ python -m pip install pymysql
(project1) [pythonuser@python project1]$ python -m pip list

Package    Version
---------- -------
pip        21.3.1
PyMySQL    1.0.2
setuptools 39.2.0

실습> 워크 스페이스 생성하기

워크 스페이스 : 작업 디렉터리로 파이썬 코드가 저장된 디렉터리
워크 스페이스 : /home/pythonuser/programming/python
(project1) [pythonuser@python project1]$ cd
(project1) [pythonuser@python ~]$ ls

project1  public_html


(project1) [pythonuser@python ~]$ mkdir programming/python -p
(project1) [pythonuser@python ~]$ cd programming/python
(project1) [pythonuser@python python]$ 



실습> 단축키 설정하기

vim-enhanced 패키지가 설치되어야 가능하다.
[roo@python ~]# yum -y install vim
[roo@python ~]# vi /etc/vimrc

 :
  :(생략)
set nu " 번호
set bg=dark " 배경색
set ts=4 " 탭크기
set expandtab  " 탭 -> 공백
set ai  " 자동 들여쓰기
set ci  " C 형태의 들여쓰기
set fileencodings='utf8,euckr'
set cursorline " 커서 라인 출력


(project1) [pythonuser@python python]$ cd
(project1) [pythonuser@python ~]$ echo "alias vi='vim'" >> .bashrc 
(project1) [pythonuser@python ~]$ source .bashrc 


(project1) [pythonuser@python ~]$ cd programming/python/
(project1) [pythonuser@python python]$ vi hello.py 


(project1) [pythonuser@python python]$ vi ~/.vimrc

" ##### 단축키 설정 #####
"  : 엔터키
" %    : 현재 문서
" %<   : 현재 문서에서 확장자를 버린 이름 ex) hello.c -> hello
" !    : 명령어 실행
" F1   : 도움말(이미 정의되어 있다)
" F2   : 쉘스크립트 실행
" F3   : 파이썬 실행
" F4   : C
" F5   : C++
" F6   : Java
"
" 쉘스크립트 실행 
" chmod 755 파일명; ./파일명
"
" 파이썬 실행
" python3 파일명
"
" C언어  컴파일
" 소스코드 -> 실행파일(바이너리)
" gcc 형식 : gcc -o 실행파일 소스파일; ./실행파일
"
" C++    컴파일
" 소스코드 -> 실행파일(바이너리)
" g++ 형식 : g++ -o 실행파일 소스파일; ./실행파일
"
" Java   컴파일
" 소스코드 -> 클래스파일(바이너리)
" javac 소스파일; java 클래스파일

" 단축키 지정 형식
" map <function키> :명령어</function키>
map  :w:!chmod 755 %:!./%
map  :w:!clear; python3 %
map  :w:!gcc -o %< %:!./%<
map  :w:!g++ -o %< %:!./%<
map  :w:!javac %:!java %<


(project1) [pythonuser@python python]$ vi hello.py 
print('Hello python!')
print('Hello python!')
print('Hello python!')
print('Hello python!')

F3 번을 누르면 파이썬 코드가 실행된다.
Hello python!
Hello python!
Hello python!
Hello python!



-- ex07.py --

"""
파일명 : ex07.py
프로그램 설명 : 자료형의 종류 (데이터 타입)
작성자 : 리눅스마스터넷
작성일 : 2021. 11. 26. (금) 17:15:42 KST
"""

# 자료형은 파이썬에서 지원하는 자료의 종류를 말한다.
# 자료형의 종류 
# 정수(int), 실수(float), 문자열(str), 리스트(list), 튜플(tuple), 셋(set), 딕셔너리(dict), 불리언(bool)
#
# 변수에 값을 저장하는 방법
# 형식 : 변수명 = 값
a = 10         # 정수 (int)
b = 3.14       # 실수 (float)
c = 'Hello'    # 문자열 (str)
d = [1, 2, 3]  # 리스트 (list)
e = (1, 2, 3)  # 튜플 (tuple)
f = {1, 2, 3}  # 셋 (set)
g = {'a':1, 'b':2, 'c':3}  # 딕셔너리 (dict)
h = True  # 불리언 (bool)

# 변수에 값을 출력하는 방법
# 형식 : print(값), print(변수명)
# 자료형을 확인하기 위한 방법
# 형식 : type(값), type(변수명)
print(a, type(a))  # 10 <class 'int'></class 'int'>
print(b, type(b))  # 3.14 <class 'float'></class 'float'>
print(c, type(c))  # Hello <class 'str'></class 'str'>
print(d, type(d))  # [1, 2, 3] <class 'list'></class 'list'>
print(e, type(e))  # (1, 2, 3) <class 'tuple'></class 'tuple'>
print(f, type(f))  # {1, 2, 3} <class 'set'></class 'set'>
print(g, type(g))  # {'a': 1, 'b': 2, 'c': 3} <class 'dict'></class 'dict'>
print(h, type(h))  # True <class 'bool'></class 'bool'>


-- ex08.py --

"""
파일명 : ex08.py
프로그램 설명 : 정수 자료형
작성자 : 리눅스마스터넷
작성일 : 2021. 11. 26. (금) 17:47:30 KST
"""

# 자료형의 종류 
# 정수(int)

# 정수를 변수에 저장하는 형식 
# 형식 : 변수명 = 정수

i = 10  # i 변수에 정수 10을 저장한다.
j = 20  # j 변수에 정수 20을 저장한다.
print(i, j)  # i 변수와 j 변수를 출력한다.

# 변수 i, j를 4가지 출력방식으로 출력한다.
# 출력은 10진수 정수값으로 출력한다.
print(i, j)  # 변수 출력
print('%d %d' %(i, j))  # % 출력
print('{} {}'.format(i, j))  # format() 메소드(함수) 출력
print(f'{i} {j}')  # f-string 출력

# 16진수 형식으로 출력한다.
# 0 ~ 9 a b c d e f 
a = 0x7   # 7
b = 0xf   # 15
c = 0x10  # 16
print(a, b, c)  # 7 15 16 

# 8진수 형식으로 출력한다.
# 0 ~ 7
d = 0o3   # 3
e = 0o10  # 8
print(d, e)  # 3 8

-- ex09.py --

"""
파일명 : ex09.py
프로그램 설명 : 정수 연산
작성자 : 리눅스마스터넷
작성일 : 2021. 11. 26. (금) 18:00:21 KST
"""

# 정수를 연산하는 형식
# 형식1 : 값   연산자  값
# 형식2 : 변수 연산자  값
# 형식3 : 값   연산자  변수
# 형식4 : 변수 연산자  변수

# 연산자 
# +, -, *, /, //, %, **

i = 10  # i 변수에 10을 저장한다.
j = 20  # j 변수에 20을 저장한다.

# 정수 연산 후 화면에 출력하는 방법
# 형식 : print(형식1) ~ print(형식4)  
print(i + j)  # 더하기 연산 결과 : 30
print(i - j)  # 빼기 연산 결과 : -10
print(i * j)  # 곱하기 연산 결과 : 200
print(i / 2)  # 나누기 연산 결과 : 5.0  <-- 파이썬은 3.x 부터 실수가 나온다.
print(i // 2) # 나누기 연산 결과(소수점 제거) : 5
print(i % 2)  # 나머지 연산 결과(나머지 연산) : 0
print(2 ** 3) # 2의 세제곱
print(2 + 3 * 2)    # 연산자 우선 순위 결과 : 8
print((2 + 3) * 2)  # 연산자 우선 순위 결과 : 10

# 정수 연산 후 변수에 저장하는 방법
# 변수를 화면에 출력하는 방법
# 형식 : 
# 변수 = 값   연산자  값
# 변수 = 변수 연산자  값
# 변수 = 값   연산자  변수
# 변수 = 변수 연산자  변수
# print(변수)
a = i + j  # 변수 i와 변수 j의 값을 더해서 변수 a에 저장한다.
print(a)

b = i - j  #  변수 i와 변수 j의 값을 빼서 변수 b에 저장한다.
print(b)

c = 2 + 3 * 2
print(c)